From d25e4a2ee8759da245a65e35a79c033fb267368d Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Mon, 14 Oct 2024 19:46:24 +0530 Subject: [PATCH 01/12] feat(webSDK): OSMINAPP-6497 web push support for extension --- chrome-extension/background.js | 724 +++++++++++++++++++++++++++++++++ chrome-extension/manifest.json | 8 + chrome-extension/popup.js | 7 +- chrome-extension/webSDK.min.js | 2 +- 4 files changed, 738 insertions(+), 3 deletions(-) create mode 100644 chrome-extension/background.js diff --git a/chrome-extension/background.js b/chrome-extension/background.js new file mode 100644 index 00000000..9c1a6295 --- /dev/null +++ b/chrome-extension/background.js @@ -0,0 +1,724 @@ +/** + * moengage-web-sdk-serviceworker v{{ VERSION }} + * (c) MoEngage Inc. http://moengage.com + */ +var MoengageSW = (function(self) { + var baseDomain = { + env: 'sdk-01.moengage.com', + get: function() { + return 'https://' + baseDomain.env; + }, + set: function(env) { + baseDomain.env = env; + } + }; + var URLS = { + addReport: function() { + return baseDomain.get() + '/v2/report/add'; + }, + batch: function() { + return baseDomain.get() + '/v2/sdk/report/'; + }, + FCM_END_POINT: 'https://fcm.googleapis.com/fcm/send/', + MOZILLA_END_POINT: 'https://updates.push.services.mozilla.com/wpush/v2/', + EDGE_END_POINT: 'https://wns2-pn1p.notify.windows.com/w/?token=', + SAFARI_END_POINT: 'https://web.push.apple.com/' + }; + + async function setStoreData(key, value) { + await chrome.storage.local.set({ [key]: value }); + } + + // To get items with async/await + async function getStoreData(key) { + const data = (await chrome.storage.local.get([key])) || {}; + return data[key]; + } + + async function removeStoreData(key) { + await chrome.storage.local.remove(key); + } + + async function getCampaignData(key) { + const data = (await getStoreData('moe_backup')) || {}; + if (key) { + return data[key]; + } + return data; + } + + async function setCampaingData(key, value) { + const data = (await getStoreData('moe_backup')) || {}; + if (data) { + data[key] = value; + await chrome.storage.local.set({ moe_backup: data }); + } + } + + async function removeCampaignData(key) { + const data = (await getStoreData('moe_backup')) || {}; + if (data) { + delete data[key]; + await chrome.storage.local.set({ moe_backup: data }); + return true; + } + return false; + } + + async function getOfflineStoreData(key) { + const data = (await getStoreData('offline_data')) || {}; + return data[key]; + } + + async function resetStorageData(params) { + await removeStoreData('moe_backup'); + await removeStoreData('reportParams'); + await removeStoreData('offline_data'); + } + // Iterates all data in a specified chrome.storage area + function iterateData(data, callback) { + return new Promise((resolve, reject) => { + resolve(Object.keys(data).map(key => callback(key, data[key]))); + }); + } + + // we remove the campaigns saved in indexedDB after 28 days + // FCM follow 28 days. + const MAX_DAYS_CAMPAIGN_SAVE = 28; + + var init = async function() { + console.log('Init Function call'); + await resetStorageData(); + self.addEventListener('install', onInstall); + self.addEventListener('activate', onActivate); + chrome.runtime.onMessage.addListener(onMessage); + self.addEventListener('push', onPush); + self.addEventListener('notificationclick', onNotificationClick); + self.addEventListener('notificationclose', onNotificationClose); + self.addEventListener('sync', onSync); + initOfflineSync(); + }; + + function onInstall(event) { + console.log('Service Worker onInstall'); + event.waitUntil(self.skipWaiting()); + } + + function onActivate(event) { + console.log('Service Worker OnActive'); + event.waitUntil(self.clients.claim()); + } + + async function onMessage(event) { + if (event.data) { + if (event.data.app_id) { + await setStoreData('reportParams', event); + if (event.data?.environment) { + baseDomain.set(event.data.environment); + } + } else if (event.data.cartToken) { + //track cart cookie as user attribute + event.waitUntil( + getStoreData('reportParams') + .then(function(res) { + if (res.data.environment) { + baseDomain.set(res.data.environment); + } + return; + }) + .then(function() { + return trackCartToken(event.data); + }) + ); + } + } + } + + function trackCartToken(data) { + return new Promise((resolve, reject) => { + //check upto 5 seconds if cart cookie exists + let maxSecondsToCheck = 5; + const cartTokenInterval = setInterval(async () => { + try { + const cookie = await cookieStore.get('cart'); + + if (cookie && cookie.value) { + //cookie found, clearInterval and track the cookie as cart_token + clearInterval(cartTokenInterval); + const extraKeys = { + h: '', + meta: { + bid: uuidV4() + }, + url: data.url + }; + const idbPayload = { cart_token: cookie.value }; //setting this key to check if re-tracking cart_token attribute is eligible on next page + const userId = data.moe_user_id; + if (userId) { + extraKeys['identifiers'] = { + moe_user_id: userId + }; + + //setting this key to check if re-tracking cart_token attribute is eligible on next page + idbPayload['USER_ATTRIBUTE_UNIQUE_ID'] = userId; + } + trackEvent( + 'EVENT_ACTION_USER_ATTRIBUTE', + { + cart_token: cookie.value + }, + undefined, + extraKeys + ); + await setStoreData('shopify_cookie_attr', idbPayload); + resolve(); + } + + maxSecondsToCheck--; + if (maxSecondsToCheck <= 0) { + //5 second elapsed, clearInterval + clearInterval(cartTokenInterval); + resolve(); + } + } catch (error) { + //error occurred while trying to get the cookie + clearInterval(cartTokenInterval); + console.error(`Unable to fetch the cart cookie: ${error}`); + resolve(); + } + }, 1000); + }); + } + + async function onPush(event) { + console.log('Service Worker OnPush'); + if (!(self.Notification && self.Notification.permission === 'granted')) { + return; + } + removeOldCampaignsFromIndexedDB(); + var campaignId; + var idbData = {}; + event.waitUntil( + getStoreData('reportParams') + .then(function(res) { + if (res && res.data) { + idbData = res.data; + if (res.data.environment) { + baseDomain.set(res.data.environment); + } + } + return; + }) + .then(function() { + try { + var jsonPayload = event.data.json(); + if (jsonPayload) { + return jsonPayload; + } + } catch (err) { + console.error( + 'payload not received or has some errors in Moengage Push' + ); + } + }) + .then(async function(data) { + var payload = data.payload; + if (!(payload && payload.moe_cid_attr)) return; + if (data.cid) { + campaignId = data.cid; + const isCampaigTriggered = await isCampaignAlreadyTriggered( + campaignId + ); + if (isCampaigTriggered) { + throw new Error( + `The campaign ${campaignId} has already been executed.` + ); + } + var campaignBackup = { + cid: campaignId + }; + + if (payload) { + campaignBackup = { + cid: campaignId, + title: payload.title, + message: payload.message, + actions: payload.actions, + image: payload.image, + moe_cid_attr: payload.moe_cid_attr, + timestamp: Date.now() + }; + } + + await setCampaingData(campaignId, campaignBackup); + } + + if (!payload || !payload.title || !payload.message) { + trackEvent( + 'MOE_NO_PAYLOAD_WEB', + { + cid: data.cid + }, + 0 + ); + console.error('Moengage - Web Push payload error'); + return showNotificationForError('Welcome', { + body: 'Something unexpected happened', + requireInteraction: false + }); + } + + var campaign_id; + var campaign_name; + try { + campaign_id = payload.moe_cid_attr.moe_campaign_id; + campaign_name = payload.moe_cid_attr.moe_campaign_name; + } catch (err) { + throw new Error('cannot get campaign ID or campaign Name.'); + } + + trackEvent( + 'NOTIFICATION_RECEIVED_WEB_MOE', + { + cid: campaignId, + moe_campaign_id: campaign_id, + moe_campaign_name: campaign_name, + ...payload.moe_cid_attr + }, + 1 + ); + + var params = { + body: payload.message, + icon: payload.icon, + tag: data.cid || 'moe-id', + badge: payload.badge, + data: { + url: payload.urlToOpen, + actions: payload.actions, + cid: campaignId + }, + requireInteraction: + (payload && !JSON.parse(data.payload.reqInteract)) || false, + actions: payload.actions, + image: payload.image + }; + + return showNotification(payload.title, params); + }) + .catch(function(err) { + console.error('Moengage Service Worker Error - ', err); + return showNotificationForError('Welcome', { + body: 'Something unexpected happened', + requireInteraction: false + }); + }) + ); + } + + async function isCampaignAlreadyTriggered(campaignId) { + try { + const campaignData = (await getStoreData('moe_backup')) || {}; + const campaignDataLength = Object.keys(campaignData).length; + if (campaignDataLength === 0) { + throw new Error('Existing campaign not present in indexedDB'); + } else { + const data = await getCampaignData(); + iterateData(data, function(dbCampaignId) { + if (campaignId === dbCampaignId) { + return true; + } + }).then(isTriggered => { + return isTriggered; + }); + } + return false; + } catch (error) { + return false; + } + } + + async function removeOldCampaignsFromIndexedDB() { + const data = await getCampaignData(); + iterateData(data, async function(campaignId, campaign) { + const now = Date.now(); + const timeDiff = (now - campaign.timestamp) / (1000 * 60 * 60 * 24); + if (timeDiff > MAX_DAYS_CAMPAIGN_SAVE) { + await removeCampaignData(campaignId); + } + }); + } + + function onNotificationClick(event) { + var notificationTitle; + var notificationData = event.notification.data; + event.notification.close(); + var clickResponsePromise = Promise.resolve(); + if (notificationData) { + if ( + event.action === '0' && + notificationData.actions && + notificationData.actions instanceof Array && + notificationData.actions.length > 0 && + notificationData.actions[0].url + ) { + clickResponsePromise = clients.openWindow( + notificationData.actions[0].url + ); + notificationTitle = notificationData.actions[0].title; + } else if ( + event.action === '1' && + notificationData.actions && + notificationData.actions instanceof Array && + notificationData.actions.length > 1 && + notificationData.actions[1].url + ) { + clickResponsePromise = clients.openWindow( + notificationData.actions[1].url + ); + notificationTitle = notificationData.actions[1].title; + } else if (notificationData.url) { + clickResponsePromise = clients.openWindow(notificationData.url); + notificationTitle = notificationData.title; + } + } + + var eventTracker = new Promise(async function(res) { + const data = await getCampaignData(); + iterateData(data, async function(campaignId, campaign) { + if (campaignId == notificationData.cid) { + var campaign_id; + var campaign_name; + try { + campaign_id = campaign.moe_cid_attr.moe_campaign_id; + campaign_name = campaign.moe_cid_attr.moe_campaign_name; + } catch (err) { + throw new Error(err); + } + trackEvent( + 'NOTIFICATION_CLICKED_WEB_MOE', + { + cid: campaign.cid, + button: notificationTitle || void 0, + moe_campaign_id: campaign_id, + moe_campaign_name: campaign_name, + ...campaign.moe_cid_attr + }, + 1 + ); + await removeCampaignData(campaignId); + return campaignId; + } + }).then(function(result) { + console.info('Web Push Campaign clicked: ', result); + res(); + }); + }); + + event.waitUntil( + getStoreData('reportParams') + .then(function(res) { + if (res.data.environment) { + baseDomain.set(res.data.environment); + } + return; + }) + .then(function() { + return Promise.all([clickResponsePromise, eventTracker]); + }) + ); + } + + async function onNotificationClose(event) { + var notificationData = event.notification.data; + const data = await getCampaignData(); + iterateData(data, function(campaignId, campaign) { + if (campaignId == notificationData.cid) { + // moeCampaignsDB.removeItem(campaignId); + return campaignId; + } + }).then(function(result) { + console.info('Web Push Campaign closed: ', result); + }); + } + + function splitEndPointSubscription(subscriptionDetails) { + var endpoint = subscriptionDetails.endpoint; + if (endpoint.indexOf(URLS.FCM_END_POINT) === 0) { + return endpoint.replace(URLS.FCM_END_POINT, ''); + } else if (endpoint.indexOf(URLS.MOZILLA_END_POINT) === 0) { + return endpoint.replace(URLS.MOZILLA_END_POINT, ''); + } else if (endpoint.indexOf(URLS.SAFARI_END_POINT) === 0) { + return endpoint.replace(URLS.SAFARI_END_POINT, ''); + } else if (endpoint.indexOf(URLS.EDGE_END_POINT) === 0) { + return endpoint.replace(URLS.EDGE_END_POINT, ''); + } + return subscriptionDetails.subscriptionId; + } + + function constructGet(url, params) { + url = url + '?'; + for (var key in params) { + url += key + '=' + params[key] + '&'; + } + return url; + } + + function showNotification(title, data) { + return self.registration.showNotification(title, data); + } + + function showNotificationForError(title, data) { + return self.registration.showNotification(title, data).then(function() { + setTimeout(closeNotifications, 2000); + }); + } + + function closeNotifications() { + self.registration.getNotifications().then(function(notifications) { + for (var i = 0; i < notifications.length; ++i) { + notifications[i].close(); + } + }); + } + + function trackEvent(eventName, attrs, flag, extraKeys = {}) { + getStoreData('reportParams').then(function(res) { + if (!res) { + return; + } + var data = res.data; + // var postData = { + // e: eventName, + // a: attrs, + // f: flag, + // }; + data.device_ts = getUtcTimestamp(); + delete extraKeys.h; + + self.registration.pushManager + .getSubscription() + .then(function(subscription) { + if (subscription) { + var subscriptionId = splitEndPointSubscription(subscription); + if (subscriptionId) { + data.push_id = subscriptionId; + } else { + delete data.push_id; + } + } else { + //web push subscription not found + delete data.push_id; + } + delete data.os_platform; + data.app_ver = data.app_ver.toString(); + + const payload = { + query_params: data, + meta: { + bid: uuidV4(), + request_time: new Date().toISOString() + }, + viewsCount: 1, + viewsInfo: [ + { + EVENT_ACTION: eventName, + EVENT_ATTRS: attrs, + EVENT_G_TIME: new Date().getTime().toString(), + EVENT_L_TIME: convertDateToDateMonthYearFormat() + } + ], + ...extraKeys + }; + + fetch(URLS.batch() + data.app_id, { + method: 'POST', + body: JSON.stringify(payload) + }).then(function(response) { + return response.json(); + }); + }); + }); + } + + function convertDateToDateMonthYearFormat() { + const date = new Date(); + return `${date.getDate()}:${date.getMonth() + + 1}:${date.getFullYear()}:${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; + } + + function uuidV4() { + return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => + ( + c ^ + (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4))) + ).toString(16) + ); + } + + function getUtcTimestamp() { + var now = new Date(); + return Number( + Date.UTC( + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate(), + now.getUTCHours(), + now.getUTCMinutes(), + now.getUTCSeconds(), + now.getUTCMilliseconds() + ) + ); + } + + /** + * Sync event will be registered incase of offline mode + * Background sync supported browsers will replay in periodic intervals till promise is resolved + */ + function onSync(event) { + console.log('Service Worker OnSync'); + if (event.tag === 'moe_offline_data_sync') { + event.waitUntil( + openDatabaseAndReplayMOERequests().then(function(message) { + // callback on success + }) + ); + } + } + + /** + * Merges multiple batch reports from offline db + */ + function mergeMOEReports() { + return new Promise(function(resolve) { + return Object.keys(getStoreData('offline_data')) + .then(function(keys) { + return keys; + }) + .then(function(keys) { + return new Promise(function() { + var promises = []; + keys.map(function(key) { + if (key !== 'requestMetaData') { + getOfflineStoreData(key).then(res => { + promises.push(getOfflineStoreData(res)); + }); + } + }); + Promise.all(promises).then(function(reports) { + resolve(reports); + }); + }); + }); + }); + } + + /** + * Flattens the array + */ + function flattenArray(reports) { + return reports.reduce(function(acc, report) { + return Array.isArray(report) + ? acc.concat(flattenArray(report)) + : acc.concat(report); + }, []); + } + + /** + * Reterives API request metadata from offline db + */ + function getRequestMetaData() { + return getStoreData('requestMetaData').then(function(requestMetaData) { + return requestMetaData; + }); + } + + /** + * Creates Report Adf request object + */ + function requestPayload() { + return Promise.all([getRequestMetaData(), mergeMOEReports()]).then(function( + moeRequestValues + ) { + if (moeRequestValues[0] && moeRequestValues[1]) { + var requestData = moeRequestValues[0]; + var mergedReports = flattenArray(moeRequestValues[1]); + requestData.viewsInfo = mergedReports; + requestData.viewsCount = mergedReports.length; + return requestData; + } + return; + }); + } + + /** + * Replays failed report_add requests in a single batch + * Fetches offline data from indexdb + */ + function openDatabaseAndReplayMOERequests() { + return new Promise(function(resolve, reject) { + requestPayload() + .then(function(reports) { + if (!reports) { + resolve('No pending requests to replay'); + } else { + return fetch(URLS.batch() + reports.query_params.app_id, { + method: 'POST', + body: JSON.stringify(reports) + }) + .then(function(response) { + return response.json(); + }) + .then(function(response) { + if (response.status !== 'success') { + throw new Error(); + } + return removeStoreData('offline_data').then(function() { + resolve( + 'successfully replayed failed requests and cleared db' + ); + }); + }); + } + }) + .catch(function(err) { + reject('Replaying failed.', err); + }); + }); + } + + /** + * Browsers that won't support background sync will replay when service worker starts. + * Fallback strategy + */ + function initOfflineSync() { + getStoreData('reportParams').then(function(res) { + if ( + res && + res.data && + (res.data.isBatchingEnabled === 'allowed' || + res.data.isBatchingEnabled === true) + ) { + openDatabaseAndReplayMOERequests() + .then(function(message) { + console.log(message); + }) + .catch(function(message) { + console.log(message); + }); + } + }); + } + + return { + init: init + }; +})(self); + +MoengageSW.init(); + +self.addEventListener('fetch', event => { + // This is a dummy event listener + // just to pass the PWA installation criteria on + // some browsers +}); diff --git a/chrome-extension/manifest.json b/chrome-extension/manifest.json index 2cc1af22..545bbaa3 100644 --- a/chrome-extension/manifest.json +++ b/chrome-extension/manifest.json @@ -2,6 +2,14 @@ "name": "Moengage SDK", "description": "Moengage Web SDK Sample for Chrome Extension", "version": "1.0", + "background": { + "service_worker": "background.js" + }, + "permissions": ["notifications", "storage"], + "web_accessible_resources": [{ + "resources": [ "injectScripts/webSDK.min.js", "injectScripts/webSDK.cards.min.js" ], + "matches": [ "" ] + }], "manifest_version": 3, "action": { "default_popup": "hello.html", diff --git a/chrome-extension/popup.js b/chrome-extension/popup.js index a6c0b59f..64e0af7d 100644 --- a/chrome-extension/popup.js +++ b/chrome-extension/popup.js @@ -1,5 +1,8 @@ console.log('This is a popup!'); window.Moengage = moe({ - app_id: 'XXXXXXXXXXXXXXXX', - debug_logs: 0 + app_id: 'XXXXXXXXXXXXXXXXXXXX', + debug_logs: 0, + environment: 'sdk-01.moengage.com', + disable_onsite: true, + disableCookies: true }); \ No newline at end of file diff --git a/chrome-extension/webSDK.min.js b/chrome-extension/webSDK.min.js index 974ecaad..bd21aacc 100644 --- a/chrome-extension/webSDK.min.js +++ b/chrome-extension/webSDK.min.js @@ -1,2 +1,2 @@ /*! For license information please see sdk.js.LICENSE.txt */ -(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,i){function a(o,s){if(!n[o]){if(!t[o]){if(r)return r(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}l=n[o]={exports:{}},t[o][0].call(l.exports,(function(e){return a(t[o][1][e]||e)}),l,l.exports,e,t,n,i)}return n[o].exports}for(var r=void 0,o=0;oe.db.version;return i&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),(a||n)&&(!n||(n=e.db.version+1)>e.version&&(e.version=n),1)}function A(e){return r([function(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),a=0;a>4,l[s++]=(15&n)<<4|i>>2,l[s++]=(3&i)<<6|63&a;return r}function U(e){for(var t=new Uint8Array(e),n="",i=0;i>2],n+=P[(3&t[i])<<4|t[i+1]>>4],n+=P[(15&t[i+1])<<2|t[i+2]>>6],n+=P[63&t[i+2]];return t.length%3==2?n=n.substring(0,n.length-1)+"=":t.length%3==1&&(n=n.substring(0,n.length-2)+"=="),n}var F={serialize:function(e,t){var n="";if(e&&(n=B.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===B.call(e.buffer))){var i,a=L;e instanceof ArrayBuffer?(i=e,a+=k):(i=e.buffer,"[object Int8Array]"===n?a+="si08":"[object Uint8Array]"===n?a+="ui08":"[object Uint8ClampedArray]"===n?a+="uic8":"[object Int16Array]"===n?a+="si16":"[object Uint16Array]"===n?a+="ur16":"[object Int32Array]"===n?a+="si32":"[object Uint32Array]"===n?a+="ui32":"[object Float32Array]"===n?a+="fl32":"[object Float64Array]"===n?a+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(a+U(i))}else if("[object Blob]"===n)(n=new FileReader).onload=function(){var n="~~local_forage_type~"+e.type+"~"+U(this.result);t(L+M+n)},n.readAsArrayBuffer(e);else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,N)!==L)return JSON.parse(e);var t,n=e.substring(x),i=e.substring(N,x);i===M&&R.test(n)&&(t=(e=n.match(R))[1],n=n.substring(e[0].length));var a=W(n);switch(i){case k:return a;case M:return r([a],{type:t});case"si08":return new Int8Array(a);case"ui08":return new Uint8Array(a);case"uic8":return new Uint8ClampedArray(a);case"si16":return new Int16Array(a);case"ur16":return new Uint16Array(a);case"si32":return new Int32Array(a);case"ui32":return new Uint32Array(a);case"fl32":return new Float32Array(a);case"fl64":return new Float64Array(a);default:throw new Error("Unkown type: "+i)}},stringToBuffer:W,bufferToString:U};function H(e,t,n,i){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,i)}function G(e,t,n,i,a,r){e.executeSql(n,i,a,(function(e,o){o.code===o.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?r(e,o):H(e,t,(function(){e.executeSql(n,i,a,r)}),r)}),r):r(e,o)}),r)}function K(e,t,n,i){var a=this;e=c(e);var r=new o((function(r,o){a.ready().then((function(){var s=t=void 0===t?null:t,l=a._dbInfo;l.serializer.serialize(t,(function(t,c){c?o(c):l.db.transaction((function(n){G(n,l,"INSERT OR REPLACE INTO "+l.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){r(s)}),(function(e,t){o(t)}))}),(function(t){t.code===t.QUOTA_ERR&&(0 '__WebKitDatabaseInfoTable__'",[],(function(t,n){for(var i=[],r=0;r{let i;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:n.g):e=>(i=i||Promise.resolve()).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},967:(e,t,n)=>{e.exports=function(e,t,n){if("number"!=typeof t)throw new Error("second argument must be a Number");let a,r,o,s,l,c,d=!0;function g(e){function t(){n&&n(e,a),n=null}d?i(t):t()}function u(t,n,i){if(a[t]=i,n&&(l=!0),0==--o||n)g(n);else if(!l&&c{var i=n(570),a=n(171);(n=a).v1=i,n.v4=a,e.exports=n},327:e=>{for(var t=[],n=0;n<256;++n)t[n]=(n+256).toString(16).substr(1);e.exports=function(e,n){var i=n||0;return[(n=t)[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[+i]]].join("")}},217:e=>{var t,n,i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);i?(t=new Uint8Array(16),e.exports=function(){return i(t),t}):(n=new Array(16),e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n})},570:(e,t,n)=>{var i,a,r=n(217),o=n(327),s=0,l=0;e.exports=function(e,t,n){var c=t&&n||0,d=t||[],g=(e=e||{}).node||i,u=void 0!==e.clockseq?e.clockseq:a;null!=g&&null!=u||(h=r(),null==g&&(g=i=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==u&&(u=a=16383&(h[6]<<8|h[7])));var p=void 0!==e.msecs?e.msecs:(new Date).getTime(),h=(n=void 0!==e.nsecs?e.nsecs:l+1,p-s+(n-l)/1e4);if(h<0&&void 0===e.clockseq&&(u=u+1&16383),1e4<=(n=(h<0||s>>24&255,d[c++]=n>>>16&255,d[c++]=n>>>8&255,d[c++]=255&n,p=p/4294967296*1e4&268435455,d[c++]=p>>>8&255,d[c++]=255&p,d[c++]=p>>>24&15|16,d[c++]=p>>>16&255,d[c++]=u>>>8|128,d[c++]=255&u;for(var m=0;m<6;++m)d[c+m]=g[m];return t||o(d)}},171:(e,t,n)=>{var i=n(217),a=n(327);e.exports=function(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var s=0;s<16;++s)t[r+s]=o[s];return t||a(o)}}},t={};function n(i){var a=t[i];return void 0!==a||(a=t[i]={exports:{}},e[i](a,a.exports,n)),a.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{exportForTesting:()=>ea,initializeLaunchSequence:()=>Xi});const e="initData",t="browserDetails",a="unifiedLogs",r={USER_DATA:"USER_DATA",PUSH_TOKEN:"PUSH_TOKEN",SUBSCRIPTION_DETAILS:"SUBSCRIPTION_DETAILS",SETUP_TIME:"SETUP_TIME",OPT_IN_SHOWN_TIME:"OPT_IN_SHOWN_TIME",SOFT_ASK_STATUS:"SOFT_ASK_STATUS",HARD_ASK_STATUS:"HARD_ASK_STATUS",WEB_SETTINGS:"WEB_SETTINGS",GRACEFUL_DATA:"GRACEFUL_DATA",Q:{PREFIX:"Q",REPORT:"REPORT",DEVICE:"DEVICE"},INIT_DATA:"INIT_DATA",OLD_SDK:{USER_DATA:"moengage_data",SUBSCRIPTION_DETAILS:"MOE_PUSH_ENDPOINT",PUSH_TOKEN:"MOE_PUSH_TOKEN"},BROWSER_DETAILS:"browserDetails",SESSION:"SESSION"},o=2,s="MOE_WEB_UNSUBSCRIBED",l="EVENT_ACTION_WEB_SESSION_START",c="MOE_PAGE_VIEWED",d="MOE_WEB_OPTIN_BANNER_LOAD",g="MOE_WEB_OPTIN_CLOSED",u="MOE_WEB_OPTIN_ACCEPTED",p="MOE_USER_SUBSCRIBED",h="MOE_OPT_IN_SHOWN",m="MOE_OPT_IN_ALLOWED",f="MOE_OPT_IN_DISMISSED",v="MOE_OPT_IN_BLOCKED",S="MOE_OPT_IN_ATTEMPT",E="MOE_LOGOUT",y="EVENT_ACTION_DEVICE_ATTRIBUTE",b="MOE_PAGE_EXIT",_="MOE_PAGE_SCROLL",T="MOE_PAGE_URL_EVENT",I="USER_ATTRIBUTE_UNIQUE_ID",A="USER_ATTRIBUTE_USER_EMAIL",w="USER_ATTRIBUTE_USER_NAME",D="USER_ATTRIBUTE_USER_FIRST_NAME",C="USER_ATTRIBUTE_USER_LAST_NAME",O="USER_ATTRIBUTE_USER_MOBILE",P="USER_ATTRIBUTE_USER_GENDER",R="USER_ATTRIBUTE_USER_BDAY",L="USER_ID_MODIFIED_FROM",N=[I,L,A,O],k="MOE_LIFECYCLE",M={MOE_INIT:"SDK_INITIALIZED",SETTINGS_FETCHED:"SETTINGS_FETCHED",EVENT_TRACKED:"EVENT_TRACKED",DEVICE_UUID:"DEVICE_UUID",MOE_INIT_COMPLETED:"SDK_INITIALIZATION_COMPLETED"},x={HARD_ASK_SHOWN:"HARD_ASK_SHOWN",HARD_ASK_DISMISSED:"HARD_ASK_DISMISSED",HARD_ASK_ATTEMPTED:"HARD_ASK_ATTEMPTED",HARD_ASK_ALLOWED:"HARD_ASK_ALLOWED",HARD_ASK_DENIED:"HARD_ASK_DENIED",SOFT_ASK_SHOWN:"SOFT_ASK_SHOWN",SOFT_ASK_DISMISSED:"SOFT_ASK_DISMISSED",SOFT_ASK_ALLOWED:"SOFT_ASK_ALLOWED"},B={code:1e3,reason:"Web push not supported in current browser environment"},W={code:1001,reason:"Registering the service worker failed"},U={code:1002,reason:"Web push settings not configured"},F={code:1004,reason:"Hard ask was dismissed to many times"},H={code:1005,reason:"Service worker can not be registered on this page due to scope issues"},G="https://media.giphy.com/media/KDRv3QggAjyo/giphy.gif",K={DC_1:"sdk-01.moengage.com",DC_2:"sdk-02.moengage.com",DC_3:"sdk-03.moengage.com",DC_4:"sdk-04.moengage.com",DC_5:"sdk-05.moengage.com",DC_100:"sdk-100.moengage.com",eu:"sdk-02.moengage.com",in:"sdk-03.moengage.com"},V={MOE_DASHBOARD:"https://app.moengage.com",MIGRATION_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",WEBSDK_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",SELF_HANDLED_DOCS:"https://docs.moengage.com/docs/self-handled-opt-ins"},j="Dashboard --\x3e Settings --\x3e Channel --\x3e Push",Y="SESSION",z="v3/sdkconfig/",q="moe_tracking",$="events",J="batched_events",X="moe_uuid",Q="MoengagePageEventHistoryManager",Z={HOST_1:"https://sdk-01.moengage.com/",HOST_2:"https://sdk-02.moengage.com/",HOST_3:"https://sdk-03.moengage.com/",HOST_4:"https://sdk-04.moengage.com/",HOST_5:"https://sdk-05.moengage.com/",HOST_100:"https://sdk-100.moengage.com/",API:{META:"v3/campaigns/inapp/live",CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/live/",DRAFT_CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/test/",STATS:"v3/campaigns/inapp/live/stats",CAMPAIGNS_PAYLOAD:"v3/campaigns/inapp/live/campaigns"},DRAFT_CAMPAIGN_TPYES:{WEB_PERSONALIZATON:"web_personalization",ONSITE_MESSAGING:"onsite_messaging"},META_REFRESH_TIME:9e5,DATABASE_NAME:"moe_onsite",OSM_MODULE:"moeOnsite",DELIVERY_FUNNEL:{ATTEMPTED:{CAMPAIGN_ATTEMPTED:"ATM"},PRIORITIZED:{CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE:"PRT_HIGH_PRT_CMP_AVL",CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN:"PRT_MAX_TIM_SWN",CAMPAIGN_PRIORITY_MIN_DELAY:"PRT_MIN_DEL",CAMPAIGN_PRIORITY_GLOBAL_DELAY:"PRT_GBL_DEL",CAMPAIGN_PRIORITY_EXPIRED:"PRT_EXP"},DELIVERED:{CAMPAIGN_DELIVERED_API_FAILURE:"DLV_API_FLR",CAMPAIGN_DELIVERED_PERSONALIZATION_FAILURE:"DLV_PERSN_FLR",CAMPAIGN_DELIVERED_PAUSED:"DLV_PAU",CAMPAIGN_DELIVERED_EXPIRED:"DLV_EXP",CAMPAIGN_DELIVERED_MANDATORY_PARAMS_MISSING:"DLV_MAND_PARM_MIS"},IMPRESSION:{CAMPAIGN_IMPRESSION_CONTEXT_CHANGED:"IMP_CTX_CHG",CAMPAIGN_IMPRESSION_GLOBAL_DELAY:"IMP_GBL_DEL",CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN:"IMP_MAX_TIM_SHW",CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE:"IMP_ANTR_CMP_VISB"},EVALUATION:{CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED:"EVL_PATH_TIME_EXP",CAMPAIGN_EVALUATION_USER_NOT_ON_APP:"EVL_USER_NOT_ON_APP"}},STORES:{CAMPAIGNS_META:{NAME:"campaigns_meta"},CAMPAIGNS_TAGS:{NAME:"campaigns_tags"},CAMPAIGNS_STATS:{NAME:"campaigns_stats"},TEST_CAMPAIGN_STORE:{NAME:"test_campaign"},EXIT_INTENT_CAMPAIGN_STORE:{NAME:"exit_intent"},SERVICE_META:{NAME:"service_meta",KEYS:{LAST_META_CALL_TIME:"last_meta_call_time",GLOBAL_DELAY:"global_delay_between_inapps",LAST_INAPP_SHOWN_TIME:"last_inapp_shown",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",UNIQUE_ID:"unique_id"}},PENDING_SECONDARY_EVENTS:{NAME:"pending_secondary_events"},PENDING_TIMER_CAMPAIGNS:{NAME:"pending_timer_campaigns"},TRIGGERING_PRIMARY_EVENTS:{NAME:"triggering_primary_events"}},EVENT_NAMES:{OSM:{CLICK:"MOE_ONSITE_MESSAGE_CLICKED",IMPRESSION:"MOE_ONSITE_MESSAGE_SHOWN",DISMISS:"MOE_ONSITE_MESSAGE_DISMISSED",AUTO_DISMIS:"MOE_ONSITE_MESSAGE_AUTO_DISMISS",TYPE:"onsite"},WP:{CLICK:"MOE_WEBP_MESSAGE_CLICKED",IMPRESSION:"MOE_WEBP_MESSAGE_SHOWN",DISMISS:"MOE_WEBP_MESSAGE_DISMISSED",DELIVERED:"MOE_WEBP_MESSAGE_DELIVERED",TYPE:"webp"}},WEB_HELPER_IFRAME_URL:"https://cdn.moengage.com/webpush/beta/webpushhelper.html",IFRAME_CHANNEL:"inapp_helper",IFRAME_TOPICS:{COOKIE_STORAGE:"COOKIE_STORAGE"},COOKIE_STORAGE:{TEST_DRAFT_TYPE:"moe_inapp_draft_type",TEST_DRAFT_ID:"moe_inapp_draft_id",TEST_DRAFT_TAG:"moe_inapp_draft_tag",TEST_CAMPAIGN_META:"test_campaign_meta",TEST_TEMPLATE_TYPE:"test_template_type",TEST_VARIATION:"moe_inapp_draft_variation",TEST_LOCALE:"moe_inapp_draft_locale"},CSS_SELECTORS:{CLICK_INAPP:"moe-inapp-click",DISMISS_INAPP:"moe-inapp-close"},EXIT_INTENT:{CONFIG:{SCROLL_DOWN_THRESHOLD:50,SCROLL_UP_THRESHOLD:5,SCROLL_INTERVAL:1e3}},POSITIONED_TEMPLATE:'data-editor-type="MOE_EDITOR"',SIDE_BANNER:'data-template-type="SIDE_BANNER"',PUSH_BANNER:"moe-osm-pusher",GCG_ERROR_CODE:"E001",SCROLL_CAMPAIGN_THROTTLING_TIME:1500},ee={CARDS:{name:"CARDS",src:"https://cdn.moengage.com/webpush/moe_webSdk_cards.min.latest.js",windowLocation:"moeCards"}},te={NAME:"offline_data"},ne="v2/sdk/report/",ie=15e3,ae="number",re={TOPIC:"MOE_AUTOMATED_EVENTS",NAMES:[s,l,c,d,g,u,p,S,h,m,f,v,E,Z.EVENT_NAMES.OSM.CLICK,Z.EVENT_NAMES.OSM.IMPRESSION,Z.EVENT_NAMES.OSM.DISMISS,Z.EVENT_NAMES.OSM.AUTO_DISMIS]},oe=[S],se="moe_cards",le={STORE_NAME:"campaigns"},ce={STORE_NAME:"meta",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",LAST_META_CALL_TIME:"last_meta_call_time",UNIQUE_ID:"unique_id",LAST_SYNC_CARDS:"last_sync_cards",SYNC_INTERVALS:"sync_intervals",SHOW_ALL_TAB:"show_all_tab"},de="appOpen",ge="IOS_PERMISSION_DENIED",ue="v1/sdk_logging/",pe="v2/device/add",he="v2/device/token-check",me="v2/report/add",fe={TV:"tv",TABLET:"tablet",MOBILE:"mobile",WEB:"web"};var ve,Se=n(483);function Ee(e,t,n){return null!=e&&t?(e=e[(t=Array.isArray(t)?t:t.split("."))[0]])&&1{})),this.zIndex=Ee(e,"zIndex","999999"),this.fontFaces=(null===(e=e.fontFaces)||void 0===e?void 0:e.map((e=>new Oe(e))))||[]}}_e.baseLogTag="CardsConfigModel";class Te{constructor(e){this.backgroundColor=Ee(e,"backgroundColor","#00237C"),this.text=Ee(e,"text","Notification"),this.color=Ee(e,"color","#fff"),this.fontSize=Ee(e,"fontSize","16px"),this.fontFamily=Ee(e,"fontFamily","inherit")}}class Ie{constructor(e={}){this.img=Ee(e,"img","https://app-cdn.moengage.com/sdk/cards-error.svg"),this.text=Ee(e,"text",'Error something went wrong ')}}class Ae{constructor(e){this.headerFontSize=Ee(e,"headerFontSize","16px"),this.descriptionFontSize=Ee(e,"descriptionFontSize","14px"),this.ctaFontSize=Ee(e,"ctaFontSize","12px"),this.fontFamily=Ee(e,"fontFamily","inherit"),this.horizontalRowColor=Ee(e,"horizontalRowColor","#D9DFED")}}class we{constructor(e){this.mWebIcon=Ee(e,"mWebIcon","https://app-cdn.moengage.com/sdk/back-icon.svg"),this.webIcon=Ee(e,"webIcon","https://app-cdn.moengage.com/sdk/cross-icon.svg"),this.callBack=Ee(e,"callBack",(()=>{}))}}class De{constructor(e){this.inactiveTabFontColor=Ee(e,"inactiveTabFontColor","#7C7C7C"),this.fontSize=Ee(e,"fontSize","14px"),this.fontFamily=Ee(e,"fontFamily","inherit"),this.backgroundColor=Ee(e,"backgroundColor","#F6FBFC"),this.active=new Pe(Ee(e,"active",{}))}}class Ce{constructor(e){this.color=Ee(e,"color","red"),this.enable=Ee(e,"enable",!1)}}class Oe{constructor(e){this.family=Ee(e,"family",""),this.url=Ee(e,"url","")}}class Pe{constructor(e){this.color=Ee(e,"color","#06A6B7"),this.underlineColor=Ee(e,"underlineColor","#06A6B7"),this.backgroundColor=Ee(e,"backgroundColor","transparent")}}class Re{constructor(e){this.enable=Ee(e,"enable",!1),this.icon=Ee(e,"icon","https://app-cdn.moengage.com/sdk/bell-icon.svg"),this.postion=Ee(e,"postion","0px 10px 40px 0"),this.countBackgroundColor=Ee(e,"countBackgroundColor","#FF5A5F"),this.countColor=Ee(e,"countColor","#fff"),this.zIndex=Ee(e,"zIndex","999998"),this.iconBackgroundColor=Ee(e,"iconBackgroundColor","#D9DFED"),this.fontFamily=Ee(e,"fontFamily","inherit")}}class Le{constructor(e){this.img=Ee(e,"img","https://app-cdn.moengage.com/sdk/cards-no-result.svg"),this.text=Ee(e,"text","No notifications to show, check again later.")}}class Ne{constructor(e){this.debugLevel=0,this.cluster=null,this.environment=null,this.baseDomainName="https://sdk-01.moengage.com/",this.inapp=null,this.customSoftAsk=null;var t=Ne.baseLogTag+".constructor";null!=Ee(e,"app_id",null)?(this.appId=Ee(e,"app_id",null),this.integrationType=ve.OLD_SDK):null!=Ee(e,"appId",null)?(this.appId=Ee(e,"appId",null),this.integrationType=ve.NEW_SDK):(at.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",V.WEBSDK_DOCS),this.integrationType=null),null!=Ee(e,"debug_logs",null)?this.debugLevel=Ee(e,"debug_logs",0):null!=Ee(e,"debugLevel",null)?this.debugLevel=Ee(e,"debugLevel",0):(at.log(2,t,"No log level config found. Using default value of",0),this.debugLevel=0),this.appId&&(this.baseDomainName="https://sdk-01.moengage.com/",this.forceSwUpdate=Ee(e,"forceSwUpdate",!1),this.cluster=Ee(e,"cluster",this.cluster),this.cluster&&null!=K[this.cluster]&&(this.environment=K[this.cluster]),Ee(e,"environment",null)&&(this.environment=e.environment),this.environment&&(this.baseDomainName="https://"+this.environment+"/"),0!!N.includes(e.key)))),e===r.SUBSCRIPTION_DETAILS&&(i.domain=t.domain,i.token=t.token,i.endpoint=t.endpoint,i.keys=t.keys),ke.set(e,i)}}static get(e){return xe.baseLogTag,e=xe.prefix+e,localStorage?Ee(xe.getMoeData(),e,null):null}static remove(e){var t=xe.baseLogTag+".remove",n=xe.prefix+e;if(localStorage&&null!=xe.get(e)){const i=xe.getMoeData();delete i[n],localStorage.setItem(Me,JSON.stringify(i)),at.log(2,t,"Key",e,"removed.")}xe.isSharedWithCookie&&0<=xe.KEYS_SHARED_WITH_COOKIE.indexOf(e)&&ke.remove(e)}static logout(){const e=["INIT_DATA","Q","WEB_SETTINGS","SUBSCRIPTION_DETAILS","PUSH_TOKEN","GRACEFUL_DATA"];for(const t in r)e.indexOf(t)<0&&xe.remove(r[t]);for(const e in r.Q)be.purge(e)}static getString(e){if(e=xe.prefix+e,localStorage)return"string"==typeof(e=xe.get(e))||e instanceof String?e:JSON.stringify(e)}static removePrefix(){xe.prefix=""}static copyKeysFromCookie(){for(let n=0;n{var n=e.findIndex((e=>e.key===t.key));0<=n?e[n]=t:e.push(t)})),e=e.filter((e=>!(N.includes(e.key)&&n.attributes.findIndex((t=>t.key===e.key))<0))),n.attributes=e}xe.set(e,n)}}xe.removeStaleKeysFromLS()}static removeStaleKeysFromLS(){var e=xe.baseLogTag+".removeStaleKeysFromLS";try{Object.keys(xe.getMoeData()).forEach((e=>{this.KEYS_SHARED_WITH_COOKIE.includes(e)&&!ke.get(e)&&xe.remove(e)}))}catch(t){at.error(1,e,t)}}static getMoeData(){var e=xe.baseLogTag+".getMoeData",t=localStorage.getItem(Me);if(null==t)return{};try{return JSON.parse(t)}catch(t){return at.error(1,e,t),{}}}}function Be(e){return 0===Object.keys(e).length&&e.constructor===Object}function We(e){e=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e>18,s=(258048&d)>>12,l=(4032&d)>>6,c=63&d,t+=n[o]+n[s]+n[l]+n[c];return 1==e?(d=i[r],o=(252&d)>>2,s=(3&d)<<4,t+=n[o]+n[s]+"=="):2==e&&(d=i[r]<<8|i[1+r],o=(64512&d)>>10,s=(1008&d)>>4,l=(15&d)<<2,t+=n[o]+n[s]+n[l]+"="),t}function Fe(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?"vapid"===e.chrome.subscriptionMode&&e.chrome.vapidPublicKey:t.isFirefox()&&"vapid"===e.firefox.subscriptionMode&&e.firefox.vapidPublicKey}function He(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?e.chrome.vapidPublicKey:t.isFirefox()?e.firefox.vapidPublicKey:""}function Ge(){const e=Ne.get().swPath;return!(!e||!e.includes("tools/moengage"))}function Ke(){const e=navigator.userAgent;return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))}function Ve(){var e=navigator.userAgent.toLowerCase(),t=/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(e);return/nexus player|neo-x5|adt-2|tsbnettv|roku|tizen|smart-tv.+(samsung)|hbbtv.+maple;(\d+)|(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))|(apple) ?tv|crkey|droid.+aft(\w)( bui|\))|\(dtv[\);].+(aquos)|(aquos-tv[\w ]+)\)|(bravia[\w ]+)( bui|\))|(mitv-\w{5}) bui|Hbbtv.*(technisat) (.*);|\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)|hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)|\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i.test(e)?fe.TV:t?fe.TABLET:Ke()?fe.MOBILE:fe.WEB}function je(e,t){const n=t&&new RegExp("^("+t.join("|")+")$");return Ve()===fe.TV&&(null!=n&&n.test(e)||!t)?{moe_os_type:function(){var e=navigator.userAgent.toLowerCase();return/tizen/i.test(e)?"Tizen":/web0s/i.test(e)?"WebOS":/xbox/i.test(e)?"Xbox":/vizio/i.test(e)?"viziotv":"SmartTV"}(),os:fe.TV.toUpperCase()}:{}}function Ye(e){return new Date(Date.parse(e))}function ze(){return window[window.moengage_object||"Moengage"]}xe.baseLogTag="PersistentStorage",xe.prefix="",xe.isSharedWithCookie=!1,xe.KEYS_SHARED_WITH_COOKIE=[r.USER_DATA,r.SUBSCRIPTION_DETAILS,r.SOFT_ASK_STATUS,r.PUSH_TOKEN,r.OPT_IN_SHOWN_TIME,r.HARD_ASK_STATUS,r.SESSION];const qe=e=>"string"==typeof e,$e=e=>"[object Date]"===Object.prototype.toString.call(e);function Je(e,t){if(null==e||null==t)return e===t;if(e instanceof Function)return e===t;if(e instanceof RegExp)return e===t;if(e===t||e.valueOf()===t.valueOf())return!0;if(Array.isArray(e)&&e.length!==t.length)return!1;if(e instanceof Date)return!1;if(!(e instanceof Object))return!1;if(!(t instanceof Object))return!1;const n=Object.keys(e);return Object.keys(t).every((e=>-1!==n.indexOf(e)))&&n.every((n=>Je(e[n],t[n])))}function Xe(){const e=new Date;return`${e.getDate()}:${e.getMonth()+1}:${e.getFullYear()}:${e.getHours()}:${e.getMinutes()}:`+e.getSeconds()}const Qe=e=>{if(e){const t=e.replace("?","").split("&"),n={};return t.forEach((e=>{e=(t=e.split("="))[0];var t=decodeURIComponent(t[1]||"");n[e]?"[object Array]"===Object.prototype.toString.call(n[e])?n[e].push(t):n[e]=[n[e],t]:n[e]=t})),JSON.parse(JSON.stringify(n))}return{}},Ze=()=>window.location.search.includes("moe_migration=true"),et=e=>{var t,n,i=xe.get(r.WEB_SETTINGS);null!=i&&i.configs.isWebPersonalisationModuleEnabled&&null!==(t=window.MoeWebP)&&void 0!==t&&t.clearLastFetchedTime(),e&&null!==(n=window.MoeWebP)&&void 0!==n&&n.getLiveExperiences()},tt=(e,t)=>{e+="?";for(const n in t)t.hasOwnProperty(n)&&null!=t[n]&&(e+=n+"="+encodeURIComponent(t[n])+"&");return e};class nt{static logData(e,t){return{log_type:e,sent_time:(new Date).toISOString(),lake_fields:t}}static setRemoteLogging(e){return this.isTrackingEnabled||(this.logLevel=null==e?void 0:e.configs.logLevel,this.isTrackingEnabled=e.configs.remoteLogTracking,this.isTrackingEnabled)}static log(e,t,n,i,...a){!this.isTrackingEnabled||e!==this.logLevel&&"verbose"!==this.logLevel||ze().remoteLogs.addRemoteLogs(this.logData(e,{msg:n+[...a].toString(),file_name:t,trace:i}))}}let it="color: white; background: #41AE55; border-radius: 5px;";class at{static setLogLevel(e,t){var n=at.baseLogTag+".setLogLevel";null==ye.get(a)&&ye.set(a,[]),null==e?at.logLevel=0:e in[0,1,2]?0<(at.logLevel=e)&&t&&at.releaseAllLogs():at.warn(0,n,"Value",e,"not supported for setDebugLevel(). Current log level is",at.logLevel,". Debug level can only be [0, 1, 2]")}static setLogTabStyle(e){at.tagLogStyle=at.tagLogStyle.replace("#48beab",e)}static log(e,t,n,...i){e<=at.logLevel?console.log("%c "+at.logBrand+" %c %c info %c %c "+t+" ",it,"","color: white; background: #18a0bf; border-radius: 5px;","",at.tagLogStyle,n,...i):at.cacheLog((()=>{at.log(e,t,n,...i)}))}static remoteLogTracking(e,t,n,i,...a){nt.log(t,n,i,...a),this.log(e,n,i,...a)}static error(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||nt.log("error",t,n,...i),e<=at.logLevel?console.error("%c "+at.logBrand+" %c %c error %c %c "+t+" ",it,"","color: white; background: #cc0a0a; border-radius: 5px;","",at.tagLogStyle,n,...i.slice(0,-1)):at.cacheLog((()=>{at.error(e,t,n,...i,{isCached:!0})}))}static warn(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||nt.log("warning",t,n,...i),e<=at.logLevel?console.warn("%c "+at.logBrand+" %c %c warn %c %c "+t+" ",it,"","color: white; background: #e8ab51; border-radius: 5px;","",at.tagLogStyle,n,...i.slice(0,-1)):at.cacheLog((()=>{at.warn(e,t,n,...i,{isCached:!0})}))}static customLabel(e,t,n,...i){e<=at.logLevel?console.log("%c "+at.logBrand+" %c %c "+t+" %c %c "+n+" %c ",it,"",at.tagLogStyle,"","color: white; background: #a400ff; border-radius: 5px;","",...i):at.cacheLog((()=>{at.customLabel(e,t,n,...i)}))}static image(e,t){e<=at.logLevel?console.log("%c+","font-size: 1px; padding: 20px 80px; line-height: 45px; background: url("+t+"); background-size: 160px 90px; color: transparent;"):at.cacheLog((()=>{at.image(e,t)}))}static releaseAllLogs(){var e=ye.get(a),t=e.length;const n=e;if(ye.set(a,[]),0{var r=JSON.stringify(Ee(n,"postData",null));t=tt(t,Ee(n,"queryParams",null));const o=new XMLHttpRequest;o.open(e,t,!0),rt.addRequestHeaders(o,Ee(n,"headers",{})),o.onreadystatechange=()=>{4===o.readyState&&200===o.status||4===o.readyState&&410===o.status?i({status:o.status,responseText:o.responseText}):4===o.readyState&&200!==o.status&&a({code:o.status,reason:o.responseText})},o.send(r)}))}static addRequestHeaders(e,t){for(const n in t)t.hasOwnProperty(n)&&e.setRequestHeader(n,t[n]);return e}}(Ui=(Ui=rt=rt||{}).METHODS||(Ui.METHODS={})).GET="GET",Ui.POST="POST";const ot=rt;class st{constructor(){this.p=null,this.res=null,this.rej=null;try{this.p=new Promise(((e,t)=>{this.res=e,this.rej=t}))}catch(e){at.error(1,"Utils.PromiseObject","Promises not supported")}}}var lt,ct=n(877);class dt{initiateSessionAndSource(e){return new Promise(((t,n)=>{this.isSessionRunning()&&this.isCurrentSourceSameAsPreviousSource()||this.startNewSession(e),t(!0)}))}isSessionRunning(){return this.getSessionKey()&&!this.isSessionExpired()}isSessionExpired(){var e=this.getSessionExpiryTime(),t=ye.get("wasBrowserInactive");return!(!t&&null!==t)&&(this.isWindowActive()&&ye.set("wasBrowserInactive",!1),(new Date).getTime()>e)}isNonEventInteractive(e){return dt.NON_INTERACTIVE_EVENTS.includes(e.name)||0"moe_non_interactive"===e.key&&1===e.value)).length}getCurrentSource(){const e=Qe(window.location.search);let t="";const n={};if(Object.keys(e).includes("utm_source")){t="utm_",this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n[t]=e[t])}));const i={source_url:window.location.href};return e[t+"source"]&&(i.source=e[t+"source"]),e[t+"medium"]&&(i.medium=e[t+"medium"]),e[t+"term"]&&(i.term=e[t+"term"]),e[t+"campaign"]&&(i.campaign_name=e[t+"campaign"]),e[t+"content"]&&(i.content=e[t+"content"]),e.utm_id&&(i.campaign_id=e.utm_id),Object.keys(n).length&&(i.extra=n),i}}getActiveSource(){return this.getSavedSource()||this.getCurrentSource()}isSourceOrganic(){const e=Qe(window.location.search),t=Object.keys(e);let n=!1;return this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n=!0)})),!t.includes("utm_source")&&!t.includes("source")&&!n}setCurrentSource(e){const t=this.getSession();t.currentSource=e,xe.set(Y,t)}removeCurrentSource(){const e=this.getSession();e&&(e.currentSource=void 0,xe.set(Y,e))}getSavedSource(){var e=Ee(this.getSession(),"currentSource",void 0);if(e)return e}isCurrentSourceSameAsPreviousSource(){if(this.isSourceOrganic())return!0;const e=Object.assign({},this.getCurrentSource());delete e.source_url;const t=Object.assign({},this.getSavedSource());return delete t.source_url,Je(e,t)}getSessionKey(){return Ee(this.getSession(),"sessionKey",null)}getSessionStartTime(){return Ee(this.getSession(),"sessionStartTime",null)}getSessionExpiryTime(){return Ee(this.getSession(),"sessionExpiryTime",null)}getSessionMaxTime(){return Ee(this.getSession(),"sessionMaxTime",null)}getSession(){return xe.get(Y)}geCustomIdentifiersToTrack(){return Ee(this.getSession(),"customIdentifiersToTrack",[])||[]}generateSessionKey(){return(0,ct.v4)()}startNewSession(e){this.removeCurrentSource();var t=this.getNumberOfSessions();t={sessionKey:this.generateSessionKey(),sessionStartTime:(new Date).toISOString(),sessionMaxTime:e.configs.sessionInactiveDuration,customIdentifiersToTrack:e.configs.sourceExtraParams,sessionExpiryTime:(new Date).getTime()+1e3*e.configs.sessionInactiveDuration,numberOfSessions:++t},xe.set(Y,t)}extendSession(){const e=this.getSession();e&&(e.sessionExpiryTime=(new Date).getTime()+1e3*e.sessionMaxTime,xe.set(Y,e))}handleBrowserInactivity(e){"hidden"===e&&ye.set("wasBrowserInactive",!0)}isWindowActive(){return!!ye.get("isWindowActive")}getNumberOfSessions(){return Ee(xe.get(Y),"numberOfSessions")||0}}dt.NON_INTERACTIVE_EVENTS=[d,h,d,E];class gt{constructor(e,t,n){this.os="web",this.osPlatform=e.userAgent,this.isMobile=Ke(),this.os=Ke()?"mweb":"web",this.name=gt.getBrowserName(e.userAgent,t),this.isIncognito=n}static getInstance(){return function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){if(null!=ye.get(t))return ye.get(t);var e=yield gt.isIncognito(window),n=new gt(navigator,document,e);return ye.set(t,n),(e=xe.get(r.BROWSER_DETAILS))&>.isBrowserUpdated(e,n)||xe.set(t,n),n}))}static isIncognito(e){const t=e.RequestFileSystem||e.webkitRequestFileSystem;return new Promise((n=>{t?t(e.TEMPORARY,100,(()=>{n(!1)}),(()=>{n(!0)})):n(!1)}))}static getBrowserName(e,t){return-1!==e.indexOf("MSIE")||1==t.documentMode?gt.BROWSER_NAMES.INTERNET_EXPLORER:-1{e.key=mt.getMorphedKey(e.key);let i=-1;for(let t=this.attributes.length-1;0<=t;t--)e.key===this.attributes[t].key&&(i=t);at.log(2,t,"Adding attribute:",e),0<=i?(this.attributes[i].value,e.value,this.attributes[i].value=e.value):this.attributes.push(e),this.save().then((()=>{n(!0)}))}))}static getLocalUser(){const e=mt.baseLogTag+".getLocalUser";return new Promise((t=>{var n;xe.get(r.USER_DATA)?(at.log(2,e,"Found user in localstorage"),n=xe.get(r.USER_DATA),t(new mt(n))):t(null)}))}static getCookieUser(){return new Promise((e=>{var t=mt.baseLogTag+".getLocalUser";ke.get(r.USER_DATA)?(at.log(2,t,"Found user in cookie"),t=ke.get(r.USER_DATA),e(new mt(t))):e(null)}))}static getMigrationUser(){const e=mt.baseLogTag+".getLocalUser";return new Promise((t=>{var n=localStorage.getItem(r.OLD_SDK.USER_DATA);if(n)try{var i=JSON.parse(n);if(i.is_new_sdk_migrated)t(null);else{const e=new mt({deviceAdded:Ee(i,"device_add",!1),deviceUuid:Ee(i,"uuid",(0,ct.v4)())}),n=Ee(i,"user_attrs",{});for(const t in n)n.hasOwnProperty(t)&&e.attributes.push(new pt(t,n[t]));var a=localStorage.getItem(r.OLD_SDK.PUSH_TOKEN);null!=a&&"NA"!==a&&"null"!==a&&(e.subscribedToOldSdk=!0),t(e)}}catch(n){at.error(1,e,"Error getting the migration user. Resolving as a new user."),at.error(1,e,n),t(null)}else t(null)}))}static getSync(){return mt.instance}static get(){const e=mt.baseLogTag+".get";return null!=ht||(ht=new Promise((t=>{ut.getInstance().then((n=>{zt.getWebSDKSettings().then((n=>{var i=mt.getLocalUser(),a=n.isDomainLevelStorage?mt.getCookieUser():"resolved";n=mt.getMigrationUser(),Promise.all([i,a,n]).then((n=>{const i=n[0],a=n[1],o=n[2];o?o.save().then((n=>{var i=localStorage.getItem(r.OLD_SDK.USER_DATA);if(i){const e=JSON.parse(i);e.is_new_sdk_migrated=!0,localStorage.setItem(r.OLD_SDK.USER_DATA,JSON.stringify(e))}at.log(1,e,"User resolved from older SDK: ",n),t(n)})):a&&"resolved"!==a?(at.log(1,e,"User resolved from cookie: ",a),a.save().then((e=>{t(e)}))):(at.log(1,e,"Local user: ",i),new mt(i).save().then((e=>{t(e)})))})).catch((t=>{at.log(1,e,"Error in fetching/creating user",t)}))})).catch((t=>{at.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}))}))),ht}static logout(){return new Promise((e=>{ht=null,e(!(this.instance=null))}))}save(){mt.baseLogTag,mt.isAmpEnabled()&&(this.deviceUuid=ke.get("moe_uuid")),xe.get("WEB_SETTINGS");var e=xe.get(r.WEB_SETTINGS);return null!=e&&e.configs.isWebPersonalisationModuleEnabled&&(this.deviceUuid=this.deviceUuid||window.MoeWebP.deviceUuid),mt.instance=this,new Promise((e=>{xe.set(r.USER_DATA,this),ke.setRaw(X,mt.instance.deviceUuid),e(this)}))}static isAmpEnabled(){const e=ke.get(X);return e&&e.includes("amp")}getAttribute(e){let t=null;return e=mt.getMorphedKey(e),this.attributes.map((n=>{n.key===e&&(t=n.value)})),t}indexOfAttribute(e){let t=-1;return e=mt.getMorphedKey(e),this.attributes.map(((n,i)=>{n.key===e&&(t=i)})),t}static getMorphedKey(e){switch(e){case"id":e=I;break;case"email":e=A;break;case"name":e=w;break;case"first_name":e=D;break;case"last_name":e=C;break;case"mobile":e=O;break;case"gender":e=P;break;case"birthday":e=R}return e}}mt.baseLogTag="UserModel",mt.isResolved=!1,mt.instance=null;class ft{constructor(){var e=ft.baseLogTag+".constructor";const t=void 0;let n=mt.getSync().getAttribute("id");n=n?n.toString():void 0;const i=window.analytics;let a,r;if(i){r=i._VERSIONS;try{a=i.user().anonymousId()}catch(t){at.error(1,e,"Error getting anonymous id from segment api",t)}}this.c=void 0,this.h="",this.identifiers=void 0,(n||a)&&(this.identifiers={moe_user_id:n,segment_id:a}),this.meta={bid:(0,ct.v4)(),segmentSdkData:i?r:void 0}}}ft.baseLogTag="ReportPostData";class vt{constructor(e,t,n){vt.baseLogTag,this.type=e,this.getParams=t,this.event=n,this.postData=new ft;const i={},a={};for(const e of n.attributes)if(e&&null!=e.key&&(this.status=vt.STATUS.VALID,null!=e.value))if("function"==typeof e.value.getMonth){const t={};t[e.key]=Math.round(e.value.getTime()-6e4*e.value.getTimezoneOffset()),null==a.timestamp&&(a.timestamp=[]),a.timestamp.push(t)}else i[e.key]=e.value;this.postData.e=n.name,this.postData.a=i,this.postData.c=Be(a)?void 0:a,window&&window.location&&null!=window.location.href&&(this.postData.url=window.location.href)}}vt.baseLogTag="ReportClass",(lt=(Ui=vt=vt||{}).STATUS||(Ui.STATUS={}))[lt.INVALID=0]="INVALID",lt[lt.VALID=1]="VALID",(Ui=Ui.REPORT_ADD_TYPE||(Ui.REPORT_ADD_TYPE={}))[Ui.USER_ATTRIBUTE=0]="USER_ATTRIBUTE",Ui[Ui.EVENT=1]="EVENT";const St=vt;function Et(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}function yt(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}const bt=class{constructor(e){this.isBeaconDisabled=this.parseSentryBooleanFlag(Ee(e,"b_d",!1)),this.isCardsModuleEnabled=this.parseSentryBooleanFlag(Ee(e,"c_s",!1)),this.isWebPersonalisationModuleEnabled=this.parseSentryBooleanFlag(Ee(e,"c_w_p_e",!1)),this.eventBatchCount=Ee(e,"e_b_c",10),this.logLevel=Ee(e,"log_level"),this.shouldSendUID=this.parseSentryBooleanFlag(Ee(e,"o_u_e",!1)),this.periodicFlushTime=Ee(e,"p_f_t",30),this.isBatchingEnabled=this.parseSentryBooleanFlag(Ee(e,"s_e_b_e",!1)),this.sessionInactiveDuration=Ee(e,"s_i_d",1800),this.isRemoteLoggingEnabled=this.parseSentryBooleanFlag(Ee(e,"s_log",!1)),this.sourceExtraParams=Ee(e,"src_ext",[]),this.whitelistedEvents=Ee(e,"w_e",[]),this.blacklistedEvents=Ee(e,"b_e",[]),this.isAppActive=this.parseSentryBooleanFlag(Ee(e,"a_s",!0)),this.remoteLogTracking=this.isRemoteLoggingEnabled&&!!this.logLevel}parseSentryBooleanFlag(e="blocked"){return"allowed"===e||!0===e||"true"===e}};class _t{constructor(){this.settingsVersion="V1",this.isDomainLevelStorage=!1,this.isConfigured=!1,this.isPushSubBilling=!1,this.platformSettings=new Dt,this.optInConfig=new Tt,this.configs=new bt({})}static parseOldSettings(e){const t=_t.baseLogTag+".parseOldSettings",n=new _t;if((n.oldWebData=e).webData&&!Be(e.webData))if(n.isConfigured=!0,e=e.webData,n.configs=new bt(e),n.settingsVersion=Ee(e,"wp_settings_version","V1"),"V2"===n.settingsVersion)n.isDomainLevelStorage=Ee(e,"domain_level_storage",!1),n.isPushSubBilling=Ee(e,"sub_billing",!1),n.platformSettings.chrome.domainType=Ee(e,"is_enabled",!1)?"https":"na",n.platformSettings.chrome.subscriptionMode=Ee(e,"web_push_platform_data.chrome.subscription_mode","vapid"),n.platformSettings.chrome.vapidPublicKey=Ee(e,"web_push_platform_data.chrome.vapid_public_key",null),n.platformSettings.firefox.subscriptionMode=Ee(e,"web_push_platform_data.firefox.subscription_mode","vapid"),n.platformSettings.firefox.vapidPublicKey=Ee(e,"web_push_platform_data.firefox.vapid_public_key",null),n.optInConfig.reappearTime=Ee(e,"prompt_again",24),n.optInConfig.type={"1-step":"ONE_CLICK","2-step":"TWO_STEP","self-handled":"SELF_HANDLED"}[Ee(e,"opt_in_type","2-step")],n.optInConfig.showOverlay=Ee(e,"show_overlay",!1),n.optInConfig.loadTime=Ee(e,"load_time",0),n.optInConfig.type!==Tt.TYPE.SELF_HANDLED&&function(e,t,n){return t===Tt.TYPE.ONE_CLICK&&n?function(e,t){return function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){let n="",i="";const a=yield ut.getInstance();return n=a.isFirefox()?(i=Et(`\n \n \n `,t),yt(`\n \n \n `,t)):a.isOpera()?(i=Et(`\n \n \n `,t),yt(`\n \n \n `,t)):(i=Et(`\n \n \n `,t),yt(`\n \n \n `,t)),{mobileUI:n,webUI:i}}))}(Ee(e,"overlay",null),Ee(e,"hide_moe_branding",!1)).then((e=>e)):t===Tt.TYPE.TWO_STEP?new Promise((t=>{t(function(e,t){var{web:n,mobile:e}=e,n=`\n
\n
\n \n \n
\n
\n \n ${n.banner.title.text}\n \n

\n ${n.banner.body.text}\n

\n
\n ${t?"":``}\n
\n \n \n ${n.allow_button.text}\n \n
\n
\n \n \n `;return{mobileUI:`\n
\n
\n \n \n ${e.nudge.title.text}\n \n
\n
\n
\n \n \n
\n
${t?"":``}\n
\n `,webUI:n}}(Ee(e,"opt_in_preview",null),Ee(e,"hide_moe_branding",!1)))})):void 0}(e,n.optInConfig.type,n.optInConfig.showOverlay).then((e=>{n.optInConfig.softAskConfig.desktop.customHTML=e.webUI,n.optInConfig.softAskConfig.mobile.customHTML=e.mobileUI})).catch((e=>{at.error(2,t,"Failed to construct overlay for hard ask",e)}));else{"false"===Ee(e,"domain_level_storage",!1)?n.isDomainLevelStorage=!1:n.isDomainLevelStorage=!(!Ee(e,"domain_level_storage",!1)&&"true"!==Ee(e,"domain_level_storage",!1));let i=Ee(e,"PushSubBilling",!1);"false"===i?i=!1:"true"===i&&(i=!0),(e=>"boolean"==typeof e)(i)||(i=!1),n.isPushSubBilling=i,n.platformSettings.chrome.domainType=Ee(e,"webPushPlatformData.chrome.domain_type",""),n.platformSettings.chrome.subscriptionMode=Ee(e,"webPushPlatformData.chrome.subscriptionMode","normal"),n.platformSettings.chrome.vapidPublicKey=Ee(e,"webPushPlatformData.chrome.vapidPublicKey",null),n.platformSettings.firefox.enabled=!0,n.platformSettings.firefox.subscriptionMode=Ee(e,"webPushPlatformData.firefox.subscriptionMode","normal"),n.platformSettings.firefox.vapidPublicKey=Ee(e,"webPushPlatformData.firefox.vapidPublicKey",null),n.platformSettings.safari.websitePushId=Ee(e,"webPushPlatformData.safari.websitePushId",null),null==n.platformSettings.safari.websitePushId?n.platformSettings.safari.enabled=!1:n.platformSettings.safari.enabled=!0,n.optInConfig.reappearTime=parseInt(Ee(e,"promptAgain",24)),Ee(e,"call_push_moengage",!0)?Ee(e,"banner.banner_flag",null)?n.optInConfig.type=Tt.TYPE.TWO_STEP:n.optInConfig.type=Tt.TYPE.ONE_CLICK:(n.optInConfig.type=Tt.TYPE.SELF_HANDLED,n.optInConfig.reappearTime=0),n.optInConfig.showOverlay=Ee(e,"show_overlay",!1),n.optInConfig.loadTime=Ee(e,"load_time",0),n.optInConfig.softAskConfig.desktop.customHTML=Ee(e,"bannerHtml.web",null),n.optInConfig.softAskConfig.mobile.customHTML=Ee(e,"bannerHtml.mweb",null),Ne.get().disableCookies&&(n.isDomainLevelStorage=!1,at.warn(2,t,"Cookies Storage Been Disabled"))}else n.isConfigured=!1;return n}}_t.baseLogTag="SdkSettings";class Tt{constructor(){this.type=Tt.TYPE.NA,this.reappearTime=24,this.softAskConfig={desktop:new It,mobile:new It}}}class It{constructor(){this.customHTML=null}}(Ui=(Ui=Tt=Tt||{}).TYPE||(Ui.TYPE={})).NA="NA",Ui.ONE_CLICK="ONE_CLICK",Ui.TWO_STEP="TWO_STEP",Ui.SELF_HANDLED="SELF_HANDLED";class At{constructor(){this.enabled=!1,this.websitePushId=null}}class wt{constructor(){this.enabled=!1,this.isServiceWorkerRoot=!0,this.serviceWorkerFilename="serviceworker.js",this.subscriptionMode="normal",this.vapidPublicKey=null,this.domainType=""}}(Ui=(Ui=wt=wt||{}).DOMAIN_TYPE||(Ui.DOMAIN_TYPE={})).NA="NA",Ui.HTTPS="https",Ui.MUTLI="multi";class Dt{constructor(){this.safari=new At,this.chrome=new wt,this.firefox=new wt}}const Ct=_t;var Ot=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Pt{static initStore(){return Ot(this,void 0,void 0,(function*(){return null==Pt.ready&&(Pt.offlineDataStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:"moe_database",storeName:te.NAME}),Pt.ready=Promise.resolve(Pt.offlineDataStore.ready())),yield Pt.ready}))}static initialize(){return Ot(this,void 0,void 0,(function*(){yield Pt.initStore()}))}}class Rt{constructor(e){this.EVENT_ACTION=e.event.name,this.EVENT_ATTRS=Lt(e.event.attributes),this.EVENT_G_TIME=(new Date).getTime().toString(),this.EVENT_L_TIME=Xe(),this.EVENT_ATTRS_CUST=e.postData.c,this.N_I_E=e.postData.nie}}Rt.baseLogTag="ReportAddViewEvent";const Lt=e=>{const t={};return e.forEach((e=>{t[e.key]=e.value})),t};class Nt{static visibilityChange(){"hidden"===document.visibilityState&&(Nt.windowClosed||Wt.reactToTriggerEvents())}static beforeUnload(){Nt.windowClosed=!0,Wt.sendBeacon()}static removeEventListeners(){document.removeEventListener("visibilitychange",Nt.visibilityChange,!1),window.removeEventListener("beforeunload",Nt.beforeUnload,!1)}static addListeners(){document.addEventListener("visibilitychange",Nt.visibilityChange,!1),window.addEventListener("beforeunload",Nt.beforeUnload,!1)}}Nt.windowClosed=!1;const kt=Nt;function Mt(e,t){try{var n=Ve();return!(null==e||!e.configs.isBatchingEnabled||("web"!==n||t.name!==ut.BROWSER_NAMES.CHROME&&t.name!==ut.BROWSER_NAMES.EDGE&&t.name!==ut.BROWSER_NAMES.OPERA)&&("mobile"!==n||ut.isIOS()||t.name!==ut.BROWSER_NAMES.CHROME&&t.name!==ut.BROWSER_NAMES.OPERA)||!navigator.sendBeacon)}catch(e){at.error(1,"Utils.batching.isBatchingSupported",e)}}class xt{static getRemoteLogsBatchRequestOptions(e){return new Promise((t=>{zt.collectGetParams().then((n=>{n={query_params:Object.assign(Object.assign({},n),{unique_id:n.unique_id,os:"web"===n.os?"Web":"mWeb"}),logs:[...e]},t(n)}))}))}static sendBatchOfLogs(e){const t=zt.baseLogTag+".sendBatchOfLogs";return new Promise(((n,i)=>{xt.getRemoteLogsBatchRequestOptions(e).then((i=>{var a=(a=Ne.get()).baseDomainName+ue+i.query_params.os.toLowerCase()+"/"+a.appId;ot.post(a,{postData:i}).then((()=>{at.log(1,t,"[sendBatchOfLogs] batch payload: "+JSON.stringify(e)),at.log(1,t,"Batch Remote Logs sent to MoEngage successfully"),xt.batchRemoteLogsApiRetries=1,n(!0)})).catch((n=>{at.log(1,t,"Batch Remote Logs API failed",n),this.handleRemoteLogsFailure(e)}))}))}))}static handleRemoteLogsFailure(e){var t=zt.baseLogTag+".handleRemoteLogsFailure";at.log(1,t,"Retry Batch Logs Failed API",xt.batchRemoteLogsApiRetries),xt.batchRemoteLogsApiRetries<3&&setTimeout((()=>{xt.batchRemoteLogsApiRetries++,xt.sendBatchOfLogs(e)}),3e3*xt.batchRemoteLogsApiRetries)}static sendBeacon(e){xt.getRemoteLogsBatchRequestOptions(e).then((e=>{var t=(t=Ne.get()).baseDomainName+ue+e.query_params.os.toLowerCase()+"/"+t.appId+"?"+(new Date).getTime();at.log(1,"RemoteLogsApi.sendBeacon","[sendBeacon] Remote Logs batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}}xt.batchRemoteLogsApiRetries=1;class Bt{static updateEventStore(){Ve()!==fe.TV&&Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:"moe_tracking",storeName:J}).setItem(J,Bt.reports)}static spliceReports(e=Bt.reports.length){return e=Bt.reports.splice(0,e),Bt.updateEventStore(),e}static spliceRemoteLogs(e=Bt.remoteLogs.length){return Bt.remoteLogs.splice(0,e)}static shouldCreateNewBatch(){return!Bt.lastbatchCreatedAt||(new Date).getTime()-Bt.lastbatchCreatedAt>=ie}static shouldCreateNewBatchForRemoteLogs(){return!Bt.lastRemoteLogsbatchCreatedAt||(new Date).getTime()-Bt.lastRemoteLogsbatchCreatedAt>=ie}static reactToTriggerEvents(){var e=Bt.baseLogTag+".reactToTriggerEvents";0{(Bt.isOfflineBatchingSupported(t,e)||e.configs.remoteLogTracking)&&(Bt.periodicSyncInterval&&Bt.clearInterval(),Bt.periodicSyncInterval=window.setInterval(Bt.periodicSync.bind(this,e.configs.periodicFlushTime),1e3*e.configs.periodicFlushTime),kt.addListeners())}))}static sendBatch(e){var t=Bt.baseLogTag+".sendBatch";try{zt.sendBatchOfReports(e).then((()=>{Bt.lastbatchCreatedAt=(new Date).getTime()}))}catch(e){at.error(1,t,"Error in sending batch",e)}}static sendRemoteLogs(e){var t=Bt.baseLogTag+".sendRemoteLogs";try{xt.sendBatchOfLogs(e).then((()=>{Bt.lastRemoteLogsbatchCreatedAt=(new Date).getTime()}))}catch(e){at.error(1,t,"Error in sending batch of remote logs",e)}}static createBatch(e){0{t(e)})),Ee(Ut.topicListeners,e.topic,[]).map((t=>{t(e)}))}static broadcastToWindow(e){window&&window.dispatchEvent(new CustomEvent(e.topic,{detail:{name:e.name,data:e.data||null}}))}static deprecatedSdkCallback(e){window.dispatchEvent(new CustomEvent("MOE_OPT_IN",{detail:e}))}static resetAllListeners(){Ut.listeners=[],Ut.topicListeners={}}}Ut.listeners=[],Ut.topicListeners={};const Ft=Ut;class Ht{constructor(e,t,n=!0){this.name=e,this.attributes=t,this.timestamp=(new Date).getTime(),n&&this.attributes.push(new pt("URL",location.href))}static createUserAttributeEvent(e){return new Promise(((t,n)=>{const i=[],a=e.key;switch(e.key){case"id":e.key=I;break;case"email":e.key=A;break;case"name":e.key=w;break;case"first_name":e.key=D;break;case"last_name":e.key=C;break;case"mobile":e.key=O;break;case"gender":e.key=P;break;case"birthday":e.key=R}i.push(e),mt.get().then((n=>{var r=n.indexOfAttribute("oldUniqueIds");e.key===I&&-1{mt.get().then((a=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){try{var r=new pt("moe_logged_in_status",!!a.getAttribute("id"));const s=new dt;var o=new pt("moe_first_visit",s.getNumberOfSessions()<=1);t.push(r,o),i(new Ht(e,t,n))}catch(r){at.error(1,"Event.createEvent","Error occurred in create events ",r)}}))))}))}}class Gt{static addEvent(e){Gt.history.push(e),Gt.listeners.forEach((t=>{t(e)}))}static getHistory(){return Gt.history}static addEventListener(e){Gt.listeners.push(e)}static clear(){Gt.history=[]}static clearListeners(){Gt.listeners=[]}}Gt.history=[],Gt.listeners=[];class Kt{static track(e,t,n){const i="MoEngage.event.trackEvent";return new Promise(((a,r)=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){var r;let o;n=!!n;try{o=yield zt.getWebSDKSettings()}catch(r){return void at.error(1,i,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}if("string"==typeof e&&e)if(o.configs.blacklistedEvents&&o.configs.blacklistedEvents.includes(e))at.log(1,i,`This event "${e}" is blacklisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is blacklisted.`});else if(!oe.includes(e)||o.configs.whitelistedEvents&&o.configs.whitelistedEvents.includes(e))try{const l=[];if(null==t||null!==t&&t===Object(t)&&"[object Object]"===Object.prototype.toString.call(t)){for(const e in t=null==t?{}:t)t.hasOwnProperty(e)&&l.push(new pt(e,t[e]));const i=new dt;yield i.initiateSessionAndSource(o);const c=yield Ht.createEvent(e,l);Gt.addEvent(c),null!=o&&o.configs.isWebPersonalisationModuleEnabled&&null!==(r=window.MoeWebP)&&void 0!==r&&r.handleInSessionEvent(c),zt.collectGetParams().then((t=>{e===s&&delete t.push_id;const r=new St(St.REPORT_ADD_TYPE.EVENT,t,c);var o={session_id:i.getSessionKey(),start_time:i.getSessionStartTime(),background_initiated:0};const l=[];(t=i.getActiveSource())&&(i.setCurrentSource(t),l.push(t)),r.postData.meta.session=o,l.length&&(r.postData.meta.source=l),i.isNonEventInteractive(c)&&(r.postData.nie=1),zt.reportAdd(r,n).then((()=>{i.isNonEventInteractive(c)||i.extendSession(),a(!0)}))}))}else at.error(1,i,"Event attributes were not passed a key-value pair object for event: ",e),a({error:5002,message:"Event value needs to be a key-value pair object"})}catch(r){at.error(1,i,"Error occurred in tracking events ",r)}else at.log(1,i,`This event "${e}" has not been whitelisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is not whitelisted.`});else at.log(1,i,"Event name not a string or null or empty string:",e),a({error:5001,message:"Event name can not be null"})}))))}}var Vt,jt,Yt=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class zt{static deviceAdd(){return new Promise(((e,t)=>{const n=Ne.get();return zt.collectGetParams(pe).then((i=>{i={queryParams:i=Object.assign(Object.assign({},i),{url:window.location.href})},ot.post(n.baseDomainName+pe,i).then((()=>{let t=Ve().toUpperCase();t="WEB"===t?"DESKTOP":t,Kt.track(y,{deviceType:t}),mt.get().then((t=>{t.deviceAdded=!0,t.save().then((()=>{Jt.startPeriodicClear(r.Q.REPORT),zt.onDeviceAdd.res(),e(!0)}))}))})).catch((e=>{be.enqueue(r.Q.DEVICE,!0),t(!1)}))}))}))}static reportAdd(e,t){const n=zt.baseLogTag+".reportAdd";return new Promise(((i,a)=>(t=!!t,zt.getWebSDKSettings().then((o=>{o.isPushSubBilling?mt.get().then((o=>{o.deviceAdded?zt.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)})):(be.enqueue(r.Q.REPORT,e),at.log(1,n,"Report added to queue as device not added yet:",e.event.name),at.log(2,n,"Event Queued:",e.event.name),e.type===St.REPORT_ADD_TYPE.USER_ATTRIBUTE&&(zt.isPushSubAttributeAccepted(e.event.attributes[0].key)?(at.log(1,n,"Attribute accepted for push sub billing."),zt.deviceAdd()):at.log(2,n,"Attribute NOT accepted for push sub billing.")),i(!0))})):zt.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)}))})).catch((e=>{at.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)})))))}static sendBroadcast(e){re.NAMES.includes(e.event.name)&&Ft.broadcastToWindow({topic:re.TOPIC,name:e.event.name,data:e.event.attributes})}static getSegmentId(){const e=window.analytics;if(e&&e.user)return e.user().anonymousId()}static getBatchRequestOptions(e){return new Promise((t=>{zt.collectGetParams(ne).then((n=>{var i=zt.getSegmentId()||"";const a=mt.getSync(),r=new dt;var o={session_id:r.getSessionKey(),start_time:r.getSessionStartTime(),background_initiated:0};const s=[];var l=r.getActiveSource();l&&(r.setCurrentSource(l),s.push(l)),o={query_params:n,identifiers:{moe_user_id:a.getAttribute("id")||void 0,segment_id:i||void 0},meta:{bid:(0,ct.v4)(),request_time:(new Date).toISOString(),session:o,source:s.length?s:void 0},viewsCount:e.length,viewsInfo:[...e]},t(o)}))}))}static addReportsToOfflineDB(e,t){return Yt(this,void 0,void 0,(function*(){const n=zt.baseLogTag+".addReportsToOfflineDB";var i=yield zt.getBatchRequestOptions([]);yield Pt.offlineDataStore.setItem(t||"report_add_"+(new Date).getTime(),e),yield Pt.offlineDataStore.setItem("requestMetaData",i),navigator.serviceWorker&&navigator.serviceWorker.ready.then((e=>{e.sync?e.sync.register("moe_offline_data_sync").then((()=>{at.log(2,n,"offline sync event registered")})).catch((e=>{at.error(1,n,"Service worker sync error",e)})):at.log(2,n,"Service worker sync unavailable")}))}))}static sendReportBeacon(e,t,n){var i=zt.baseLogTag+".sendReportBeacon";try{if(!e&&navigator.sendBeacon&&navigator.sendBeacon(t,new Blob([JSON.stringify(n)],{type:"text/plain;charset=UTF-8"})))return!0}catch(e){at.error(2,i,"Failed to send Report call with Beacon:",e)}return!1}static sendBatchOfReports(e){const t=zt.baseLogTag+".sendBatchOfReports";return new Promise(((n,i)=>{zt.getBatchRequestOptions(e).then((a=>{var r=Ne.get();const o=r.baseDomainName+ne+r.appId;zt.getWebSDKSettings().then((r=>zt.sendReportBeacon(r.configs.isBeaconDisabled,o,a)?(at.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),at.log(1,t,"Batch sent to MoEngage successfully through beacon"),void n(!0)):void ot.post(o,{postData:a}).then((()=>{at.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),at.log(1,t,"Batch sent to MoEngage successfully"),n(!0)})).catch((a=>{at.error(1,t,"Batch Report add API failed",a),ut.getInstance().then((o=>{Wt.isOfflineBatchingSupported(o,r)?(zt.addReportsToOfflineDB(e).then((()=>{at.log(2,t,"Network offline: Batch added to offline db")})),n(!0)):i(a)})).catch((()=>{i(a)}))})))).catch((e=>{at.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),i(e)}))}))}))}static reportAddInternal(e,t){const n=zt.baseLogTag+".reportAddInternal";return new Promise(((i,a)=>{zt.getWebSDKSettings().then((a=>{ut.getInstance().then((o=>{var l;if(null!==(l=a.configs)&&void 0!==l&&l.isBatchingEnabled&&!t)Mt(a,o)?(Wt.addReport(e,a.configs.eventBatchCount),at.log(1,n,"Event batched successfully:",e.event),this.addEventsToIDB(e.event),i(!0)):(c=new Rt(e),zt.sendBatchOfReports([c]).then((()=>{i(zt.handleReportAddSuccess(e))})).catch((t=>{zt.handleReportAddFailure(e,t)})));else{const l=zt.getUpdatedPushDetails();for(const t in l)!l.hasOwnProperty(t)||e.event.name===s&&"push_id"===t||(e.getParams[t]=l[t]);var c=je();const d={queryParams:Object.assign(Object.assign({},e.getParams),c)};if(e.postData.nie){const t=Object.assign({},e);delete t.postData.meta.source,delete t.postData.meta.session,d.postData=t.postData}else d.postData=e.postData;let g=Ne.get().baseDomainName;if(g+=t?pe:me,!g.includes(pe)&&zt.sendReportBeacon(null===(c=a.configs)||void 0===c?void 0:c.isBeaconDisabled,tt(g,Ee(d,"queryParams",null)),d.postData))return at.log(1,n,"Event tracked through beacon:",e.event),void i(zt.handleReportAddSuccess(e));ot.post(g,d).then((()=>{if(g.includes(pe)){let e=Ve().toUpperCase();e="WEB"===e?"DESKTOP":e,Kt.track(y,{deviceType:e})}i(zt.handleReportAddSuccess(e))})).catch((i=>{var s;Mt(a,o)?(at.error(1,n,"Add Report API failed, adding reports to offline db",i),t?be.enqueue(r.Q.DEVICE,e):(s=new Rt(e),zt.offlineEvents.push(s),zt.addReportsToOfflineDB(zt.offlineEvents,"report_add").then((()=>{at.log(2,n,"Network offline: Batch added to offline db")})))):zt.handleReportAddFailure(e,i)}))}}))})).catch((e=>{at.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)}))}))}static handleReportAddSuccess(e){var t=zt.baseLogTag+".handleReportAddSuccess";return e.type===St.REPORT_ADD_TYPE.EVENT?(at.log(1,t,"Event tracked successfully:",e.event),this.addEventsToIDB(e.event)):e.type===St.REPORT_ADD_TYPE.USER_ATTRIBUTE&&at.log(1,t,"User attribute added successfully:",e.event.attributes),zt.addReportApiRetries=1,!0}static handleReportAddFailure(e,t){var n=zt.baseLogTag+".handleReportAddFailure";at.error(1,n,"Add Report API failed",t),e.type===St.REPORT_ADD_TYPE.EVENT?at.log(1,n,"Queueing unsuccessful event tracking:",e.event):e.type===St.REPORT_ADD_TYPE.USER_ATTRIBUTE&&at.log(1,n,"Queueing unsuccessful user attribute add:",e.event.attributes),zt.addReportApiRetries<3&&setTimeout((()=>{zt.addReportApiRetries++,be.enqueue(r.Q.REPORT,e),Jt.startPeriodicClear(r.Q.REPORT)}),3e3*zt.addReportApiRetries)}static checkIfTokenValid(e){const t=Ne.get().baseDomainName+he,n=Ne.get();return new Promise((i=>{e?mt.get().then((a=>{a={queryParams:{app_id:n.appId,unique_id:a.deviceUuid,push_id:e}},ot.post(t,a).then((e=>{200===e.status?i(!0):i(!1)})).catch((e=>{i(!1)}))})):i(!1)}))}static isAppBlocked(e){return!(!e||!1!==e.configs.isAppActive)}static getWebSDKSettings(){return new Promise(((e,t)=>{let n=Ne.get();var i,a;null!=n&&null!=n.appId||(n=new Ne(xe.get(r.INIT_DATA))),zt.sdkSettings?zt.isAppBlocked(zt.sdkSettings)?t(!1):e(zt.sdkSettings):(i=(new Date).getTime(),null==(a=xe.get(r.SETUP_TIME))||0{e(t)})).catch((e=>{t(!1)})):xe.get(r.WEB_SETTINGS)?(zt.sdkSettings=xe.get(r.WEB_SETTINGS),zt.isAppBlocked(zt.sdkSettings)?t(!1):e(zt.sdkSettings)):zt.getAndPersistWebSettings(n).then((t=>{e(t)})).catch((e=>{t(!1)})))}))}static getAndPersistWebSettings(e){const t=zt.baseLogTag+".getAndPersistWebSettings";return new Promise(((n,i)=>Yt(this,void 0,void 0,(function*(){try{var a={queryParams:{app_id:(e=null==e.appId?new Ne(xe.get(r.INIT_DATA)):e).appId}};at.log(1,t,"Fetching latest web sdk settings for",e.appId);var o=yield ot.get(e.baseDomainName+"v2/websdksettings",a);at.log(1,t,"Fetching config settings for",e.appId);let h=o.responseText;"string"==typeof h&&(h=JSON.parse(h));var s=Ke()?"mweb":"web",l=e.baseDomainName+z+s+"/"+e.appId;try{var c,d=xe.get(r.USER_DATA),g={postData:{query_params:{unique_id:d&&d.deviceUuid}}},u=yield ot.post(l,g);at.log(1,t,"Fetched latest web and config settings"),200===u.status&&(c=u.responseText,c=JSON.parse(c),h.webData=Object.assign(Object.assign({},h.webData),c))}catch(e){at.error(1,t,"Config API failed")}var p=(new Date).getTime();if(h=Ct.parseOldSettings(h),xe.set(r.WEB_SETTINGS,h),xe.set(r.SETUP_TIME,p),zt.isAppBlocked(h))return void i(!1);zt.sdkSettings=h,n(h)}catch(a){at.error(1,t,"Settings APi Failed: ",a),zt.webSdkApiRetries<3?setTimeout((()=>{zt.webSdkApiRetries++,n(zt.getAndPersistWebSettings(e))}),3e3*zt.webSdkApiRetries):i(!1)}}))))}static collectGetParams(e){return new Promise(((t,n)=>{mt.get().then((n=>{let i=Ne.get();null!=i&&null!=i.appId||(i=new Ne(xe.get(r.INIT_DATA)));const a=new Date,o=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds());ut.getInstance().then((a=>{var s=je(e,[me,pe,ne]);const l=Object.assign({os:a.os,os_platform:a.osPlatform,is_incognito:a.isIncognito,app_id:i.appId,os_ver:a.name,sdk_ver:"2.30.19",model:a.name,app_ver:"1.0",device_ts:Number(o),device_tz_offset:(-6e4*(new Date).getTimezoneOffset()).toString(),unique_id:n.deviceUuid,device_tz:(new Date).getTimezoneOffset().toString()},s);null!=(s=xe.get(r.PUSH_TOKEN))&&"NA"!==s&&""!==s&&"null"!==s&&(l.push_id=s),a.isWebPushCompatible()&&(Fe(this.sdkSettings.platformSettings,a)?(l.subscription_type="vapid",l.vapid_public=He(this.sdkSettings.platformSettings,a)):l.subscription_type="normal"),null!=i.environment&&(l.environment=i.environment),a.name===ut.BROWSER_NAMES.SAFARI&&(l.websitePushId=this.sdkSettings.platformSettings.safari.websitePushId);var c=xe.get(r.SUBSCRIPTION_DETAILS);if(null!=c&&null!=c.keys){for(const e in c.keys)l["keys_"+e]=encodeURI(c.keys[e]);null!=c.endpoint&&(l.endpoint=encodeURI(c.endpoint)),l.expirationTime=c.expirationTime}t(l)}))}))}))}static getUpdatedPushDetails(){const e={};var t=xe.get(r.SUBSCRIPTION_DETAILS);if(null!=t){var n=xe.get(r.PUSH_TOKEN);if(null!=n&&"NA"!==n&&""!==n&&"null"!==n&&(e.push_id=n),t.keys){for(const n in t.keys)e["keys_"+n]=encodeURI(t.keys[n]);null!=t.endpoint&&(e.endpoint=encodeURI(t.endpoint)),e.expirationTime=t.expirationTime}}return e}static isPushSubAttributeAccepted(e){return e===A||e===O}static sendBeacon(e){zt.getBatchRequestOptions(e).then((e=>{var t=(t=Ne.get()).baseDomainName+ne+t.appId+"?"+(new Date).getTime();at.log(1,"MoeApi.sendBeacon","[sendBeacon] batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}static addEventsToIDB(e){if(Ve()!==fe.TV){const t=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:q,storeName:$});null!=t&&t.setItem(e.name,e)}}}zt.baseLogTag="MoeApi",zt.onDeviceAdd=new st,zt.webSdkApiRetries=1,zt.offlineEvents=[],zt.addReportApiRetries=1;const qt=n(967),$t=r.Q;class Jt{static clear(e){var t=Jt.baseLogTag+".clear";const n=[];for(;!be.isEmpty(e);)switch(e){case $t.REPORT:const i=be.dequeue($t.REPORT);n.push((e=>{zt.reportAdd(i).then((()=>{e()}))}));break;case $t.DEVICE:be.dequeue($t.DEVICE)&&n.push((e=>{zt.deviceAdd().then((()=>{e()}))}));break;default:at.error(1,t,"Do not know how to handle queue with name:",e)}setTimeout((()=>{Jt.processing[e]=!0,qt(n,5,((t,n)=>{Jt.processing[e]=!1}))}),0)}static startPeriodicClear(e){const t=Jt.baseLogTag+".startPeriodicCleanQ";Jt.clearInterval(e);var n=()=>{be.isEmpty(e)?(at.log(1,t,"If you see multiple event tracks with same, they were captured over multiple visits or page refreshes."),Ee(Jt.processing,e,!1)||Jt.clearInterval(e)):(Jt.clear(e),at.log(1,t,"Starting periodic queue clear for",e))};n(),Jt.intervals[e]=setInterval(n,6e3)}static clearInterval(e){null!=Jt.intervals[e]&&(clearInterval(Jt.intervals[e]),Jt.intervals[e]=null)}}Jt.baseLogTag="QManager",Jt.intervals={},Jt.processing={},(Ui=Vt=Vt||{}).PROMPT="prompt",Ui.GRANTED="granted",Ui.DENIED="denied",Ui.DISMISSED="dismissed";class Xt{static addCallback(e,t){null!=e&&null!=t&&(null==Xt.callbacks[e]&&(Xt.callbacks[e]=[]),Xt.callbacks[e].push(t))}static getCallbacks(e){return Xt.callbacks[e]||[]}static runCallbacks(e){Xt.getCallbacks(e).forEach((e=>{e()}))}}Xt.callbacks={};class Qt{constructor(e){this.swRegisterPromise=null,this.swActiveRetries=1;const t=Qt.baseLogTag+".constructor";this.sdkSettings=e,this.registerServiceWorker().then((e=>{this.sendDataToServiceWorker()})).catch((e=>{at.error(1,t,"Error registering serviceworker:",e)}))}showHardAsk(){const e=Qt.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{Qt.isWebPushSupported().then((i=>{i?this.getCurrentPermissionState().then((i=>{this.registerServiceWorker().then((a=>{i!==Vt.DENIED?(at.remoteLogTracking(1,"info",e,"Attempting to open hard ask"),Kt.track(S),Ft.broadcastToWindow({topic:k,name:x.HARD_ASK_ATTEMPTED}),this.showOverlay(),this.askPermission().then((n=>{this.hideOverlay(),at.remoteLogTracking(2,"info",e,"Permission state after hard ask:",n),n===Vt.GRANTED?this.getPushTokenDetails().then((e=>{this.sendDataToServiceWorker(e.token),t({state:n,subscriptionDetails:e})})):(this.sendDataToServiceWorker(),t({state:n,subscriptionDetails:null}))})).catch((t=>{at.error(1,e,t),n(W)}))):(at.remoteLogTracking(1,"info",e,"Hard ask not shown as permission state is",i),t({state:i,subscriptionDetails:null}))})).catch((t=>{at.error(1,e,"Error registering serviceworker:",t),n(t)}))})).catch((t=>{at.error(1,e,"Registering service worker failed:",t),n(W)})):(at.warn(1,e,"Web push not supported in current browser environment"),n(B))}))}))}sendDataToServiceWorker(e){return new Promise((t=>{zt.collectGetParams().then((t=>{var n;e&&(t.push_id=e||xe.get(r.PUSH_TOKEN)||void 0),t.isBatchingEnabled=xe.get(r.WEB_SETTINGS).configs.isBatchingEnabled,Ge()||null!==(n=Ne.get())&&void 0!==n&&n.swScope?Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:"moe_database",storeName:"moe_data"}).setItem("reportParams",{data:t}):navigator.serviceWorker.ready.then((()=>{this.sendDataToServiceWorkerOnControllerReady(t)}))}))}))}sendDataToServiceWorkerOnControllerReady(e){navigator.serviceWorker.controller?navigator.serviceWorker.controller.postMessage({data:e}):this.swActiveRetries<3&&setTimeout((()=>{this.swActiveRetries++,this.sendDataToServiceWorkerOnControllerReady(e)}),500)}getCurrentPermissionState(){return ut.getInstance().then((e=>navigator.permissions&&!e.isSafari()?navigator.permissions.query({name:"notifications"}).then((e=>Qt.parsePermissionState(e.state))).catch((e=>{})):new Promise((t=>{let n=Notification.permission;e.isSafari()&&"default"===n&&(n="prompt",xe.get(ge)&&(n="denied")),t(Qt.parsePermissionState(n))}))))}getPushTokenDetails(){const e=Qt.baseLogTag+".getPushTokenDetails";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((n=>{ut.getInstance().then((i=>{n!==Vt.GRANTED?t({token:null,raw:null}):this.registerServiceWorker().then((n=>{let a=null;const r={userVisibleOnly:!0};Fe(this.sdkSettings.platformSettings,i)&&(a=He(this.sdkSettings.platformSettings,i),r.applicationServerKey=We(a));const o=()=>{n.pushManager.subscribe(r).then((e=>{(e=>{const n=e.toJSON();var a=e.endpoint.substring(0,n.endpoint.lastIndexOf("/")+1);e=n.expirationTime;let r=n.endpoint.split("/")[n.endpoint.split("/").length-1];i.isEdge()&&(r=r.replace("?token=",""));const o={};if(n.keys)for(const e in n.keys)n.keys.hasOwnProperty(e)&&(o[e]=n.keys[e]);t({token:r,endpoint:a,keys:o,expirationTime:e,raw:n})})(e)})).catch((n=>{at.error(1,e,"Error in subscribtion: ",n),t({token:null,raw:null})}))};n.pushManager.getSubscription().then((e=>{if(e)if("vapid"===this.sdkSettings.platformSettings.chrome.subscriptionMode&&e.options&&e.options.applicationServerKey){var t=Ue(e.options.applicationServerKey);[a,a+"=",a+"==",Ue(We(a))].indexOf(t)<0?e.unsubscribe().then((()=>{o()})):o()}else o();else o()}))})).catch((n=>{at.error(1,e,"Error in getting push token: ",n),t({token:null,raw:null})}))}))}))}))}removeToken(){return xe.remove(r.PUSH_TOKEN),xe.remove(r.SUBSCRIPTION_DETAILS),Promise.resolve()}askPermission(){return new Promise(((e,t)=>{Notification.requestPermission().then((t=>{xe.set(r.OPT_IN_SHOWN_TIME,Date.now()),Kt.track(h),Ft.broadcastToWindow({topic:k,name:x.HARD_ASK_SHOWN}),Ft.deprecatedSdkCallback("opt_in_shown"),Xt.runCallbacks(x.HARD_ASK_SHOWN),e(Qt.parsePermissionState(t))})).catch((e=>{t(F)}))}))}registerServiceWorker(){const e=Qt.baseLogTag+".registerServiceWorker";return null!=this.swRegisterPromise||(this.swRegisterPromise=new Promise(((t,n)=>{if(Qt.registeredServiceWorker)t(Qt.registeredServiceWorker);else if("serviceWorker"in navigator){let i="serviceworker.js",a=!1;if(Ne.get()&&null!=Ne.get().swPath&&(i=Ne.get().swPath,a=!0),"/"===i[0]||i.startsWith("http")||(i="/"+i),Ge())at.log(1,e,"Removing scope in case of shopify."),this.registerScopedSW(i,/moengage/,t,n);else{let r="/";Ne.get()&&null!=Ne.get().swScope?(r=Ne.get().swScope,this.registerScopedSW(i,r,t,n)):(a&&(at.log(1,e,"Using user defined path to serviceworker:",i),r=i.substr(0,i.lastIndexOf("/")+1),Qt.canSwBeRegisteredWithScope(r)||(at.error(1,e,"Service worker can only be registered from same directory or child directory."),n(H))),navigator.serviceWorker.register(i,{scope:r}).then((i=>{at.log(2,e,"Serviceworker registered"),navigator.serviceWorker.ready.then((n=>{at.log(2,e,"Serviceworker ready"),Qt.registeredServiceWorker=n,Ne.get()&&Ne.get().forceSwUpdate&&n.update(),t(n)})).catch((t=>{at.error(1,e,"Service worker register failed:",t),n(W)}))})).catch((t=>{at.error(1,e,"Service worker register failed:",t),n(W)}))),at.log(1,e,"Scope for serviceworker:",r)}}else at.error(1,e,"Service worker not supported"),n("Service worker not supported")}))),this.swRegisterPromise}registerScopedSW(e,t,n,i){const a=Qt.baseLogTag+".registerScopedSW";navigator.serviceWorker.register(e).then((e=>{at.log(2,a,"Serviceworker registered"),navigator.serviceWorker.getRegistrations().then((e=>{e.forEach((e=>{setTimeout((()=>{e.active&&e.active.scriptURL.match(t)&&(at.log(2,a,"Serviceworker ready"),Qt.registeredServiceWorker=e,Ne.get()&&Ne.get().forceSwUpdate&&e.update(),n(e))}),100)}))})).catch((e=>{at.error(1,a,"Service worker register failed:",e),i(W)}))})).catch((e=>{at.error(1,a,"Service worker register failed:",e),i(W)}))}static canSwBeRegisteredWithScope(e){var t=window.location.pathname;return e=e,!((t=t).indexOf(e)<0)&&0<=t.substring(t.indexOf(e)).length}static isWebPushSupported(){return new Promise((e=>{ut.getInstance().then((t=>{!t.isIncognito&&"serviceWorker"in navigator&&"PushManager"in window&&t.isWebPushCompatible()?e(!0):e(!1)}))}))}static parsePermissionState(e){return"prompt"===e?Vt.PROMPT:"granted"===e?Vt.GRANTED:"denied"===e?Vt.DENIED:"default"===e?Vt.DISMISSED:null}showNotification(e){const t=Qt.baseLogTag+".showNotification";this.registerServiceWorker().then((n=>{e?e.title?e.body?(null==e.requireInteraction&&(e.requireInteraction=!0),n.showNotification(e.title,e)):at.error(1,t,"Notification body can not be blank"):at.error(1,t,"Notification title can not be blank"):at.error(1,t,"Notification object can not be blank")})).catch((e=>{at.error(1,t,"Error registering serviceworker:",e)}))}showOverlay(){if(this.sdkSettings.optInConfig.showOverlay&&this.sdkSettings.optInConfig.type===Tt.TYPE.ONE_CLICK){const e=document.createElement("div");e.id="moe-push-div",e.style.display="none",e.className="moe-push-class",ut.getInstance().then((t=>{t.isMobile?e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.mobile.customHTML:e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.desktop.customHTML;const n=document.body.firstChild;let i;if(n.parentNode.insertBefore(e,n),(t=t.name)===ut.BROWSER_NAMES.CHROME||t===ut.BROWSER_NAMES.OPERA_NEON?i=document.getElementsByClassName("moe_chrome"):t===ut.BROWSER_NAMES.FIREFOX?i=document.getElementsByClassName("moe_firefox"):t!==ut.BROWSER_NAMES.OPERA&&t!==ut.BROWSER_NAMES.SAFARI||(i=document.getElementsByClassName("moe_opera")),0===i.length)document.getElementById("moe-push-div").style.display="none";else for(let e=i.length-1;0<=e;e--)i[e].style.display="block";this.overlayTimer=window.setTimeout((()=>{""===e.style.opacity&&(e.style.display="block")}),1500),e.onclick=()=>{this.hideOverlay()}}))}}hideOverlay(){clearTimeout(this.overlayTimer);const e=document.getElementById("moe-push-div");null!=e&&(e.style.visibility="none",e.style.opacity="0",e.parentNode.removeChild(e))}}Qt.baseLogTag="HTTPS-NotificationManager";const Zt="Web push settings not configured on MoEngage dashboard: "+j;class en{constructor(e,t){this.currentManager=null;var n=en.baseLogTag+".constructor";this.config=e,this.browser=t,this.browser.isWebPushCompatible()?e.platformSettings.chrome&&("https"===e.platformSettings.chrome.domainType?"https"===function(){if(window)return"localhost"===window.location.hostname?"https":"http:"===window.location.protocol?"http":"https:"===window.location.protocol?"https":void 0}()?this.currentManager=new Qt(e):at.error(1,n,"Web Push does not work in http mode"):(Ge()&&new Qt(e),at.warn(1,n,"Web push settings not configured. Please configure at ",j))):this.browser.name===ut.BROWSER_NAMES.SAFARI&&e.platformSettings.safari&&"safari"in window&&"pushNotification"in window.safari&&(this.currentManager=null,at.warn(1,n,"Web push is only supported on Safari 16 and above."))}showHardAsk(){const e=en.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((i=>{null!=this.currentManager?i===Vt.PROMPT?this.currentManager.showHardAsk().then((n=>{n.state===Vt.DISMISSED?(Kt.track(f),Ft.broadcastToWindow({topic:k,name:x.HARD_ASK_DISMISSED}),Ft.deprecatedSdkCallback("opt_in_dismissed"),Xt.runCallbacks(x.HARD_ASK_DISMISSED),at.log(1,e,"Hard ask was dismissed")):n.state===Vt.GRANTED?(Kt.track(m),Ft.broadcastToWindow({topic:k,name:x.HARD_ASK_ALLOWED,data:n.subscriptionDetails}),Ft.deprecatedSdkCallback("opt_in_allowed"),Xt.runCallbacks(x.HARD_ASK_ALLOWED),at.log(1,e,"Push permission was granted"),at.customLabel(1,e,"token",n.subscriptionDetails.token)):n.state===Vt.DENIED&&(Kt.track(v),Kt.track("Web Push Opt-in Denied"),Ft.broadcastToWindow({topic:k,name:x.HARD_ASK_DENIED}),Ft.deprecatedSdkCallback("opt_in_blocked"),Xt.runCallbacks(x.HARD_ASK_DENIED),at.log(1,e,"Notification permission was denied")),t(n)})).catch((n=>{at.error(1,e,"Error showing hard ask:",n),t({state:i,subscriptionDetails:null})})):(at.log(1,e,"Not showing Hard Ask as current permission state is",i),this.getPushTokenDetails().then((n=>{at.customLabel(1,e,"token",n.token),t({state:i,subscriptionDetails:n})})).catch((n=>{at.warn(1,e,"Could not get push token details"),t({state:i,subscriptionDetails:null})}))):(at.log(1,e,"MoEngage web push settings not configured. Please configure at",j),n(U))})).catch((e=>{n(e)}))}))}getCurrentPermissionState(){return null!=this.currentManager?this.currentManager.getCurrentPermissionState():Promise.reject(Zt)}getPushTokenDetails(){return null!=this.currentManager?this.currentManager.getPushTokenDetails():Promise.reject(Zt)}removeToken(){return null!=this.currentManager?this.currentManager.removeToken():Promise.reject(Zt)}showNotification(e){var t=en.baseLogTag+".showNotification";if(null!=this.currentManager)return this.currentManager.showNotification(e);at.warn(1,t,Zt)}}en.baseLogTag="NotificationManager";class tn{constructor(e){this.mainDivs=[],this.config=e}showSoftAsk(){const e=tn.baseLogTag+".showSoftAsk";return new Promise(((t,n)=>{let i=this.config.optInConfig.loadTime;ut.getInstance().then((n=>{(this.config.optInConfig.type===Tt.TYPE.SELF_HANDLED||n.isSafari()&&this.config.optInConfig.type===Tt.TYPE.ONE_CLICK)&&(i=0),i&&at.log(1,e,"Delay of",i," second(s) requested before opt-in flow"),setTimeout((()=>{!n.isWebPushCompatible()||this.config.optInConfig.type!==Tt.TYPE.TWO_STEP&&this.config.optInConfig.type!==Tt.TYPE.SELF_HANDLED?(xe.set(r.SOFT_ASK_STATUS,jt.NOT_SHOWN),t({showHardAsk:!0,softAskState:jt.NOT_SHOWN})):this.showOptIn((()=>{at.log(1,e,"Soft ask was shown"),xe.set(r.OPT_IN_SHOWN_TIME,Date.now()),xe.set(r.SOFT_ASK_STATUS,jt.SHOWN),Ft.broadcastToWindow({topic:k,name:x.SOFT_ASK_SHOWN}),Ft.deprecatedSdkCallback("soft_ask_shown"),Xt.runCallbacks(x.SOFT_ASK_SHOWN)}),(()=>{Kt.track(u),this.hideOptIn(),at.log(1,e,"Soft ask was allowed"),xe.set(r.SOFT_ASK_STATUS,jt.ALLOWED),t({showHardAsk:!0,softAskState:jt.ALLOWED}),Ft.broadcastToWindow({topic:k,name:x.SOFT_ASK_ALLOWED}),Ft.deprecatedSdkCallback("soft_ask_allowed"),Xt.runCallbacks(x.SOFT_ASK_ALLOWED)}),(()=>{this.hideOptIn(),Kt.track(g),at.log(1,e,"Soft ask was dismissed"),xe.set(r.SOFT_ASK_STATUS,jt.DISMISSED),t({showHardAsk:!1,softAskState:jt.DISMISSED}),Ft.broadcastToWindow({topic:k,name:x.SOFT_ASK_DISMISSED}),Ft.deprecatedSdkCallback("soft_ask_closed"),Xt.runCallbacks(x.SOFT_ASK_DISMISSED)}),(e=>{e=!!e,this.hideOptIn(),t({showHardAsk:e,softAskState:jt.NOT_SHOWN})}))}),1e3*i)}))}))}showOptIn(e,t,n,i){const a=tn.baseLogTag+".showOptIn";if(this.config.optInConfig.type===Tt.TYPE.TWO_STEP){let r=document.getElementById("moe-push-div");null==r&&(r=document.createElement("div"),r.id="moe-push-div",r.className="moe-push-class"),ut.getInstance().then((o=>{let s=null;if(s=(o.isMobile?this.config.optInConfig.softAskConfig.mobile:this.config.optInConfig.softAskConfig.desktop).customHTML,null!=s){r.innerHTML=s;const o=document.body.firstChild;o.parentNode.insertBefore(r,o),this.moeDiv=r;const l=document.getElementById("optInText")||document.getElementById("optInTextConventional"),c=document.getElementById("moe-dontallow_button");null==l?(at.error(1,a,"Error showing soft ask. Allow button id is missing"),i()):(e(),Kt.track(d),l.onclick=()=>{t()},c?c.onclick=()=>{n()}:window.moeRemoveBanner=()=>{n()})}else at.error(1,a,"Error displaying soft ask"),i()}))}else if(this.config.optInConfig.type===Tt.TYPE.SELF_HANDLED){var r=Ne.get();if(r.customSoftAsk){var o=document.getElementsByClassName(r.customSoftAsk.mainClass),s=document.getElementsByClassName(r.customSoftAsk.allowClass),l=document.getElementsByClassName(r.customSoftAsk.dismissClass);if(o.length<1)at.error(1,a,"Could not find main class for the soft ask. Class name given:",r.customSoftAsk.mainClass),ut.getInstance().then((e=>{e.isWebPushCompatible()&&(at.warn(1,a,"Proceeding to hard ask directly"),i(!0))}));else{e(),s.length<1&&(at.warn(1,a,"Could not find any element for allow button. Class name given:",r.customSoftAsk.allowClass),at.warn(1,a,"Docs for self-handled opt in available here - ",V.SELF_HANDLED_DOCS)),l.length<1&&at.warn(1,a,"Could not find any element for dismiss button. Class name given:",r.customSoftAsk.dismissClass);for(let e=o.length-1;0<=e;e--){const t=o[e];this.mainDivs.push(t),t.style.display="block"}for(let e=s.length-1;0<=e;e--)s[e].onclick=()=>{t()};for(let e=l.length-1;0<=e;e--)l[e].onclick=()=>{n()}}}else ut.getInstance().then((e=>{e.isWebPushCompatible()?(at.warn(1,a,"No soft ask configured. Proceeding to hard ask directly. \n\nYou can ignore this message if you do not want any soft ask."),i(!0)):(at.error(1,a,"Soft ask needs to be present in case of http implementation. Can not show hard ask otherwise."),i())}))}}hideOptIn(){null!=this.moeDiv&&(this.moeDiv.style.display="none"),0{e.style.display="none"}))}}tn.baseLogTag="SoftAskManager",(Ui=jt=jt||{}).SHOWN="shown",Ui.NOT_SHOWN="not shown",Ui.ALLOWED="allowed",Ui.DISMISSED="dismissed";class nn{constructor(e){this.deviceToLogout=Ee(e,"deviceToLogout",null)}static get(){return new nn(xe.get(r.GRACEFUL_DATA))}save(){xe.set(r.GRACEFUL_DATA,this)}}var an=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const rn="MoEngage.user";class on{static addAttribute(e,t){const n=rn+".addUserAttribute";return new Promise(((i,a)=>{let r=!1;if("string"!=typeof e||null==e)at.error(1,n,"Attribute name needs to be a string"),i({error:5e3,message:"Attribute name needs to be a string. Type provided was "+typeof e});else if(""===e)at.error(1,n,"Attribute name can not be an empty string"),i({error:5001,message:"Attribute name can not be an empty string"});else if(null==t)at.error(1,n,"Attribute value null"),i({error:5003,message:"Attribute value was empty"});else if("string"==typeof t&&""===t)i({error:5004,message:"Attribute value needs to be non-empty string, non-empty array or date object"});else if("object"!=typeof t||Array.isArray(t)||"function"==typeof t.getMonth)if("object"==typeof t&&Array.isArray(t)&&0===t.length)at.error(1,n,"Value cannot be empty, non-string, non-array or non-date object"),i({error:5006,message:"Attribute value needs to be non-empty string, non-empty array or date object"});else if("object"==typeof t&&Array.isArray(t)&&void 0!==t.find((e=>"object"==typeof e&&"function"!=typeof e.getMonth)))at.error(1,n,"Elements of the attribute value-array cannot be non-Date objects"),i({error:5007,message:"Attribute value-array cannot have non-Date objects as its elements"});else{const a=new pt(e,t),o=()=>{mt.get().then((e=>{e.addAttribute(a).then((e=>{e?("id"===a.key&&at.log(1,n,"Logging in the user with id: ",a.value),Ht.createUserAttributeEvent(a).then((e=>{at.log(2,n,"Event to be converted to report:",e),Gt.addEvent(e),zt.collectGetParams().then((t=>{t=new St(St.REPORT_ADD_TYPE.USER_ATTRIBUTE,t,e),zt.reportAdd(t).then((()=>{r&&Wi.onsite.refresh&&Wi.onsite.refresh(),i(!0)}))}))}))):(at.log(1,n,"Attribute already present/queued. Not adding again."),i({error:5005,message:"Attribute already present/queued. Not adding again."}))}))}))};"id"===e?(r=!0,mt.get().then((e=>{var a=e.indexOfAttribute("id");-1{o()})))):(et(!0),o())}))):o()}else at.error(1,n,"Value cannot be empty, non-string, non-array or non-date object"),i({error:5005,message:"Attribute value needs to be non-empty string, non-empty array or date object"})}))}static login(e){return on.addAttribute("id",e)}static logout(e,t){const n=rn+".logout",i=e?{type:"forced",new_uid:t}:null;return function(){const e=nn.get();null!=mt.getSync()&&(e.deviceToLogout=mt.getSync().deviceUuid,e.save())}(),new Promise((e=>{Kt.track(E,i).then((()=>an(this,void 0,void 0,(function*(){at.log(1,n,"Logging out now!"),yield Wt.flushReports(),zt.getWebSDKSettings().then((t=>an(this,void 0,void 0,(function*(){var n;t.isDomainLevelStorage&&ke.remove(r.USER_DATA),Gt.clear(),yield Gi(),yield function(){return Ni(this,void 0,void 0,(function*(){const e="Moengage.disableCards",t=Ne.get();try{zt.getWebSDKSettings().then((e=>Ni(this,void 0,void 0,(function*(){var n;if(null!=e&&e.configs.isCardsModuleEnabled&&null!==(n=t.cards)&&void 0!==n&&n.enable){const e=yield ln.loadModule(ee.CARDS);yield e.logout(),xi=new st}})))).catch((t=>{at.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}catch(t){at.error(1,e,"Error logging out from cards module:",t)}}))}(),et(),xe.logout(),yield mt.logout(),xe.remove(r.GRACEFUL_DATA),zt.onDeviceAdd=new st,yield Xi(),t.configs.remoteLogTracking&&(n=Ne.get(),yield zt.getAndPersistWebSettings(n)),e(!0)})))).catch((t=>{at.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),e(!1)}))}))))}))}static updateUniqueId(e){const t=rn+".updateUniqueId";return new Promise((n=>{mt.get().then((i=>{var a=i.indexOfAttribute(I),r=i.indexOfAttribute("oldUniqueIds");if(!(-1{on.login(e).then((()=>{n(!0)}))}))):(at.warn(1,t,"New id and old id are the same. Not updating the id."),n(!0))}))}))}static getAttributes(){const e=mt.getSync().attributes,t={};return e.map((e=>{t[e.key]=e.value})),t}}class sn{constructor(e,t){this.notificationManager=null,this.softAskManager=null,sn.baseLogTag,this.sdkSettings=e,this.browser=t,this.softAskManager=new tn(this.sdkSettings),this.notificationManager=new en(this.sdkSettings,t)}callWebPush(){const e=sn.baseLogTag+".callWebPush";this.isWebPushEnabled()&&this.notificationManager.getCurrentPermissionState().then((t=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){const n=(n=t)=>{mt.get().then((t=>{let i=!1;var a=t.getAttribute("email"),o=t.getAttribute("mobile");null===a&&null===o||(i=!0),t.deviceAdded=i,t.save().then((()=>{this.notificationManager.removeToken().then((()=>{n===Vt.DENIED?at.log(1,e,"Not asking for permission as current state is denied."):(xe.remove(r.OPT_IN_SHOWN_TIME),this.startPushSubscription())}))}))}))},i=yield ut.getInstance();var a=xe.get(r.PUSH_TOKEN),o=t===Vt.DENIED&&!this.sdkSettings.isDomainLevelStorage;null==a&&t!==Vt.DENIED?this.startPushSubscription():null!=a&&(o||i.isSafari()&&t===Vt.PROMPT)?(at.log(1,e,"User has removed the permission"),at.image(1,G),i.isSafari()&&t===Vt.PROMPT&&(xe.set(ge,!0),t=Vt.DENIED),Kt.track(s,{Source:"Website"}).then((()=>{n(t)}))):o?at.warn(1,e,"Not proceeding with push subscription as current state is denied"):null!=a&&t===Vt.GRANTED?this.browser.name===ut.BROWSER_NAMES.CHROME?Fe(this.sdkSettings.platformSettings,this.browser)?this.startPushSubscription():at.warn(1,e,"Subscription mode is not VAPID type. Cannot subscribe to web push."):(this.startPushSubscription(),this.notificationManager.getPushTokenDetails().then((t=>{at.customLabel(1,e,"token",t.token)}))):this.sdkSettings.isDomainLevelStorage?"granted"===ke.get(r.HARD_ASK_STATUS)?(a=null===(a=ke.get(r.SUBSCRIPTION_DETAILS))||void 0===a?void 0:a.domain)&&a===window.location.origin?(at.log(1,e,"It seems that the user has unsubscribed manually. Starting push subscription.."),Kt.track(s,{Source:"Website"}).then((()=>{n(t)}))):at.log(1,e,"Not showing opt-in as user subscribed to sub-domain"):this.startPushSubscription():n()})))).catch((t=>{at.error(1,e,"Error in getting current state:",t)}))}startPushSubscription(){const e=sn.baseLogTag+".startPushSubscription",t=()=>{xe.set(r.HARD_ASK_STATUS,Vt.PROMPT);const t=xe.get(r.PUSH_TOKEN);this.notificationManager.showHardAsk().then((n=>{xe.set(r.HARD_ASK_STATUS,n.state),n.state===Vt.GRANTED?null!=n.subscriptionDetails.token?(xe.set(r.PUSH_TOKEN,n.subscriptionDetails.token),n.subscriptionDetails.domain=window.location.origin,xe.set(r.SUBSCRIPTION_DETAILS,n.subscriptionDetails),n.subscriptionDetails.token&&t!==n.subscriptionDetails.token&&zt.deviceAdd().then((()=>{at.image(1,"https://media.giphy.com/media/90F8aUepslB84/giphy.gif"),mt.getSync().subscribedToOldSdk?at.remoteLogTracking(1,"info",e,"User subscribed from older sdk, hence not sending subscription event"):(null!=t?on.addAttribute("Web Migrated User","true"):(on.addAttribute("Web Push Preference","granted"),on.addAttribute("Web Subscription URL",location.href)),Ze(),Kt.track(p,{MOE_WEB_PUSH_TOKEN:n.subscriptionDetails.token,migrated_user:!!Ze()||void 0}))})),this.sdkSettings.isDomainLevelStorage&&(ke.set(r.SUBSCRIPTION_DETAILS,{domain:n.subscriptionDetails.domain,token:n.subscriptionDetails.token,endpoint:n.subscriptionDetails.endpoint,keys:n.subscriptionDetails.keys}),ke.set(r.PUSH_TOKEN,n.subscriptionDetails.token))):(at.error(1,e,"Push token was received as null."),at.error(1,e,"Please contact MoEngage support if this troubleshooting does not solve the issue.")):n.state===Vt.DENIED&&at.image(1,G)})).catch((t=>{at.warn(1,e,t)}))},n=()=>{this.softAskManager?this.softAskManager.showSoftAsk().then((e=>{e.showHardAsk&&t()})):at.log(1,e,"SoftAskManager not set.")};this.notificationManager.getCurrentPermissionState().then((i=>{if(i===Vt.GRANTED)this.sdkSettings.optInConfig.type!==Tt.TYPE.ONE_CLICK&&at.remoteLogTracking(1,"info",e,"Skipping soft ask as browser permission is set to allow all notifications"),t();else{var a=parseInt(xe.get(r.OPT_IN_SHOWN_TIME));if(xe.get(r.SOFT_ASK_STATUS),xe.get(r.HARD_ASK_STATUS),i=(Date.now()-a)/36e5,!a||i>this.sdkSettings.optInConfig.reappearTime)if(this.browser.name===ut.BROWSER_NAMES.SAFARI&&this.sdkSettings.optInConfig.type===Tt.TYPE.ONE_CLICK){at.log(1,e,"1 step optin configured. In Safari 16+ and macOS 13+, the web push optin will be shown after a user click. Any delay will be ignored.");const t=()=>{window.removeEventListener("click",t),n()};window.addEventListener("click",t)}else n();else{let t,n;n=i<1?(t=Math.floor(60*i),"minute(s)"):(t=Math.floor(100*i)/100,"hour(s)"),at.remoteLogTracking(1,"info",e,"Not showing opt in as last it was shown",t,n,"back on",new Date(a),". Reappear time is set to",this.sdkSettings.optInConfig.reappearTime,"hours."),at.log(1,e,"You can clear localstorage to get opt-in again.")}}}))}isWebPushEnabled(){return!this.browser.isIncognito&&0<=sn.SUPPORTED_BROWSERS.indexOf(this.browser.name)&&navigator.serviceWorker&&"PushManager"in window}getPermissionState(){return this.notificationManager.getCurrentPermissionState()}showNotification(e){this.notificationManager&&this.notificationManager.showNotification(e)}}sn.baseLogTag="WebPushManager",sn.SUPPORTED_BROWSERS=[ut.BROWSER_NAMES.CHROME,ut.BROWSER_NAMES.FIREFOX,ut.BROWSER_NAMES.OPERA,ut.BROWSER_NAMES.SAFARI,ut.BROWSER_NAMES.EDGE];class ln{static loadModule(e){var t=ln.baseLogTag+".loadModule";return null!=ln.loadPromises[e.name]||(at.log(1,t,"Starting to fetch module: ",e.name),ln.loadPromises[e.name]=new Promise(((t,n)=>{ln.addScript(e.src,(()=>{var n=new(0,window[ee[e.name].windowLocation])(n=Ne.get());t(n)}))}))),ln.loadPromises[e.name]}static addScript(e,t){const n=document.createElement("script");n.setAttribute("src",e),n.onload=t,n.async=!0,document.body.appendChild(n)}}ln.baseLogTag="ModuleManager",ln.loadPromises={};var cn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class dn{static initialize(){return cn(this,void 0,void 0,(function*(){var e;return null==dn.ready&&(dn.serviceMetaStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.SERVICE_META.NAME}),dn.campaingsMetaStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.CAMPAIGNS_META.NAME}),dn.pendingSecondaryEvents=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.PENDING_SECONDARY_EVENTS.NAME}),dn.pendingTimerCampaigns=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.PENDING_TIMER_CAMPAIGNS.NAME}),dn.triggeringPrimaryEvents=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.TRIGGERING_PRIMARY_EVENTS.NAME}),dn.campaingsTagsStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.CAMPAIGNS_TAGS.NAME}),dn.campaingsStatsStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.CAMPAIGNS_STATS.NAME}),dn.testCampaignStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.CAMPAIGNS_STATS.NAME}),dn.exitIntentCampaignStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.EXIT_INTENT_CAMPAIGN_STORE.NAME}),e=[dn.serviceMetaStore.ready(),dn.campaingsMetaStore.ready(),dn.pendingSecondaryEvents.ready(),dn.pendingTimerCampaigns.ready(),dn.triggeringPrimaryEvents.ready(),dn.campaingsTagsStore.ready(),dn.campaingsStatsStore.ready(),dn.testCampaignStore.ready(),dn.exitIntentCampaignStore.ready()],dn.ready=Promise.all(e)),dn.ready}))}static clear(){return cn(this,void 0,void 0,(function*(){var e=dn.baseLogTag+".clear";try{yield dn.initialize(),yield Promise.all([dn.serviceMetaStore.clear(),dn.campaingsMetaStore.clear(),dn.campaingsTagsStore.clear(),dn.campaingsStatsStore.clear(),dn.testCampaignStore.clear(),dn.exitIntentCampaignStore.clear(),dn.pendingSecondaryEvents.clear(),dn.pendingTimerCampaigns.clear(),dn.triggeringPrimaryEvents.clear()]);var t=[dn.serviceMetaStore.ready(),dn.campaingsMetaStore.ready(),dn.campaingsTagsStore.ready(),dn.campaingsStatsStore.ready(),dn.testCampaignStore.ready(),dn.exitIntentCampaignStore.ready(),dn.pendingSecondaryEvents.clear(),dn.pendingTimerCampaigns.clear(),dn.triggeringPrimaryEvents.clear()];dn.ready=Promise.all(t)}catch(t){at.error(1,e,"Error clearing onsite stores:",t)}return dn.ready}))}}dn.baseLogTag="MOE_ONSITE_STORES";var gn,un,pn,hn,mn,fn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const vn=(e,t,n)=>null==e.campaignId?()=>{}:()=>(dn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{clicks:Ee(t,"clicks",0)+1}):{clicks:1},dn.campaingsStatsStore.setItem(e.campaignId,t)})),null==n&&(n={}),bn().track_event(Z.EVENT_NAMES[t].CLICK,Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:Z.EVENT_NAMES[t].TYPE},n),e.campaignContext))),Sn=(e,t,n=!1)=>null==e.campaignId?()=>{}:()=>{if(dn.initialize().then((()=>{dn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{impressions:Ee(t,"impressions",0)+1,lastImpression:new Date}):{impressions:1,lastImpression:new Date},dn.campaingsStatsStore.setItem(e.campaignId,t)}))})),!n)return bn().track_event(Z.EVENT_NAMES[t].IMPRESSION,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:Z.EVENT_NAMES[t].TYPE,templateType:e.templateType},e.campaignContext))},En=(e,t,n)=>{n=n?Z.EVENT_NAMES[t].AUTO_DISMIS:Z.EVENT_NAMES[t].DISMISS,bn().track_event(n,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:Z.EVENT_NAMES[t].TYPE},e.campaignContext))},yn=(e,t)=>{bn().track_event(Z.EVENT_NAMES[t].DELIVERED,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:Z.EVENT_NAMES[t].TYPE},e.campaignContext))},bn=()=>{var e=window.moengage_object||"Moengage";return window[e]};class _n{static isValid(e,t){return!_n.isCampaignExpired(e)&&_n.isCampaignActive(e)&&_n.isUserInCampaignSegment(e)&&_n.isCampaignWithinFC(e,t)}static isCampaignExpired(e){return(new Date).getTime()>new Date(e.expiryTime).getTime()}static isValidMessagingCampaign(e,t,n,i,a){return _n.canCampaignBeRenderedOverExisting(e,a.length)&&_n.hasCampaignClearedSelfDelay(e,t)&&_n.hasCampaignClearedGlobalDelay(e,n,i)}static isCampaignActive(e){var t=_n.baseLogTag+".isValid";return e.status===pn.ACTIVE||(at.warn(1,t,`Campaign ${e.campaignId} : Status is `+e.status),!1)}static isUserInCampaignSegment(e){var t=_n.baseLogTag+".isValid";return!!e.userInSegment||(at.warn(1,t,`Campaign ${e.campaignId} : User is not in segment`),!1)}static isCampaignWithinFC(e,t){var n=_n.baseLogTag+".isValid";if([mn.SELF_HANDLED].indexOf(e.templateType)<0){var i=Ee(e,"delivery.fc_meta.count",0);if(0e.delivery.priority||!(t.delivery.prioritye.updatedTime?1:-1}}_n.baseLogTag="CampaignUtils";const Tn=e=>fn(void 0,void 0,void 0,(function*(){var t=e.map((e=>dn.campaingsStatsStore.getItem(e.campaignId)));let n;try{n=yield Promise.all(t);const i=e.filter(((e,t)=>_n.isValid(e,n[t])));return i.sort(_n.comparator)}catch(t){return at.error(1,"filterAndSortCampaigns","Error filtering and sorting campaigns: ",t),[]}}));class In{}In.REMOVE_TRAIL_CHARS=/[^\w\s]+$/gi;const An=(e,t)=>{const n=Ee(e,"triggerData.primary_condition.included_filters",null);return(null==n?void 0:n.filter_operator)===hn.OR&&-1<(null==n?void 0:n.filters.findIndex((e=>e.action_name===t)))},wn=e=>fn(void 0,void 0,void 0,(function*(){var t=yield dn.exitIntentCampaignStore.getItem(e.campaignId);return e.onsitePayload=t,at.log(1,"getPrefetchedCampaign","Prefetched exit intent campaign found: "+e.campaignId),e})),Dn=e=>fn(void 0,void 0,void 0,(function*(){try{return yield dn.campaingsMetaStore.getItem(e)}catch(e){return at.error(2,"getCampaignById","Error getting campaign from store: ",e),null}})),Cn=()=>new Promise((e=>{setTimeout((()=>fn(void 0,void 0,void 0,(function*(){const t=[];yield dn.campaingsMetaStore.iterate((e=>{t.push(e)})),e(t)}))),0)})),On=e=>null===(e=Ee(e,"triggerData.secondary_condition.included_filters.filters"))||void 0===e?void 0:e.length,Pn=e=>"moe-onsite-campaign-"+e;class Rn{constructor(e,t,n,i){this.dataType=e,this.availableOperations=t,this.event=n,this.filter=i}validate(){return!(this.availableOperations.indexOf(this.filter.operator)<0)}checkEq(){let e=!1;return this.event.attributes.forEach((t=>{let n=t.value,i=this.filter.value;this.dataType===gn.STRING&&typeof n===gn.STRING&&(n=this.removeSpecialChars(n),i=this.removeSpecialChars(i)),t.key===this.filter.name&&(this.dataType!==gn.STRING||this.filter.case_sensitive?n===i&&(e=!0):n.toLowerCase()===i.toLowerCase()&&(e=!0))})),e}checkExists(){let e=!1;return this.event.attributes.forEach((t=>{t.key===this.filter.name&&(e=!0)})),e}removeSpecialChars(e){return e.replace(In.REMOVE_TRAIL_CHARS,"")}}(Ui=gn=gn||{}).BOOL="bool",Ui.STRING="string",Ui.DATE="datetime",Ui.NUMBER="double",Ui.LONG="long",Ui.ARRAY_BOOL="array_bool",Ui.ARRAY_NUMBER="array_double",Ui.ARRAY_STRING="array_string",Ui.ARRAY_DATETIME="array_datetime",(Ui=un=un||{}).ALLOF="all_of",Ui.ANYOFF="any_of";const Ln=["is","exists","contains","startsWith","endsWith","in"];class Nn extends Rn{constructor(e,t){super(gn.STRING,Ln,e,t)}evaluate(){Nn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0e.substr(0,t.length)===t;return this.filter.case_sensitive?t(e.value,this.filter.value):t(e.value.toLowerCase(),this.filter.value.toLowerCase())}checkEndsWith(e){var t=(e,t,n)=>((void 0===n||n>e.length)&&(n=e.length),e.substring(n-t.length,n)===t);if(this.filter.case_sensitive)return t(e.value,this.filter.value);const n=this.removeSpecialChars(e.value),i=this.removeSpecialChars(this.filter.value);return t(n.toLowerCase(),i.toLowerCase())}checkIn(e){let t=!1;if(Array.isArray(this.filter.value))for(let n=this.filter.value.length-1;0<=n;n--)if(this.filter.case_sensitive){if(this.filter.value[n]===e.value){t=!0;break}}else if(this.filter.value[n].toLowerCase()===e.value.toLowerCase()){t=!0;break}return t}}Nn.baseLogTag="StringDataType";const kn=["is","exists"];class Mn extends Rn{constructor(e,t){super(gn.BOOL,kn,e,t)}evaluate(){let e=!1;switch(this.filter.operator){case"is":e=this.checkEq();break;case"exists":e=this.checkExists()}return this.filter.negate?!e:e}}Mn.baseLogTag="BooleanDataType";const xn=["is","exists","greaterThan","lessThan","between","in"];class Bn extends Rn{constructor(e,t){super(gn.NUMBER,xn,e,t)}evaluate(){Bn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0this.filter.value}checkLessThan(e){return e.valuee.key===this.filter.name));const n=0t:e.value.setHours(0,0,0,0)t:e.value.setHours(0,0,0,0)>t.setHours(0,0,0,0)}checkLastX(e){var t=(new Date).setHours(0,0,0,0);return 0e.key===this.filter.name));return null!=(t=0Array.isArray(e))(t.value)&&(e=this.filter.array_filter_type&&this.filter.array_filter_type===un.ANYOFF?this.checkAnyOf(t):this.checkAllOf(t)),e}checkAllOf(e){return e.value.every((t=>this.getFilterResult(t,e)))}checkAnyOf(e){return e.value.some((t=>this.getFilterResult(t,e)))}getFilterResult(e,t){let n=!1;e=this.createCustomEvent(t.key,e);const i=this.getDataType(e);return i.validate()&&(n=i.evaluate()),n}createCustomEvent(e,t){return t=new pt(e,t),new Ht(this.event.name,[t])}getDataType(e){let t;switch(this.filter.data_type){case gn.ARRAY_BOOL:t=new Mn(e,this.filter);break;case gn.ARRAY_DATETIME:t=new Un(e,this.filter);break;case gn.ARRAY_NUMBER:t=new Bn(e,this.filter);break;case gn.ARRAY_STRING:t=new Nn(e,this.filter)}return t}}class Gn{static doesEventMatchFilters(e,t){Gn.baseLogTag;let n=!1,i=null;switch(t.data_type){case gn.BOOL:i=new Mn(e,t),i.validate()&&(n=i.evaluate());break;case gn.STRING:i=new Nn(e,t),i.validate()&&(n=i.evaluate());break;case gn.NUMBER:case gn.LONG:i=new Bn(e,t),i.validate()&&(n=i.evaluate());break;case gn.DATE:i=new Un(e,t),i.validate()&&(n=i.evaluate());break;case gn.ARRAY_STRING:case gn.ARRAY_DATETIME:case gn.ARRAY_BOOL:case gn.ARRAY_NUMBER:i=new Hn(e,t),i.validate()&&(n=i.evaluate())}return n}static doesValueMatchFilter(e,t){return e=new pt(t.name,e),e=new Ht("sample event",[e]),Gn.doesEventMatchFilters(e,t)}}Gn.baseLogTag="TriggerEvaluator";class Kn{constructor(e){var t=Kn.baseLogTag+".constructor";this.campaignId=Ee(e,"campaign_id",null),this.campaignName=Ee(e,"campaign_name",null),this.templateType=Ee(e,"template_type",null),this.campaignContext=Ee(e,"campaign_context",null);var n=Ee(e,"status",null);const i=[pn.ACTIVE,pn.EXPIRED,pn.PAUSED];i.indexOf(n)<0?this.status=pn.ACTIVE:this.status=i[i.indexOf(n)],this.tag=Ee(e,"tag",null),this.triggerData=null,Vn.validate(Ee(e,"trigger"))?this.triggerData=new Vn(Ee(e,"trigger")):at.log(2,t,"Rejecting trigger data for :",e),this.expiryTime=Ye(Ee(e,"expiry_time")+"Z"),this.updatedTime=Ye(Ee(e,"updated_time")+"Z"),this.delivery=new Jn(Ee(e,"delivery")),this.userInSegment=Ee(e,"user_in_segment",!0),n=Ee(e,"display",this.display=null),t=Ee(e,"display_filter",null),this.templateType!==mn.SELF_HANDLED&&(null!=t?this.display=new Zn({rules:{uri_filters:t}},this.templateType):null!=n&&(this.display=new Zn(n,this.templateType))),this.stats={},this.onsitePayload=null,this.editorVersion=Ee(e,"editor_version",null)}static isValidMetaJSON(e){Kn.baseLogTag;let t=!0;var n=["campaign_id","campaign_name","template_type","status","expiry_time","updated_time","delivery","user_in_segment"];for(let i=0;it.action_name===e||t.action_name===b&&"MOE_EXIT"===e))}static areFiltersAbsent(e){return!(null==e||!e.action_name||null!==(e=null==e?void 0:e.attributes)&&void 0!==e&&e.filters)}static getFilters(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filters)||null}static getFilterOperator(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filterOperator)||hn.AND}static isTriggered(e,t,n,i){let a=!0;if(0<(null==t?void 0:t.length)){let o;o=i||Kn.getFilterOperator(n);var r=t.map((t=>Gn.doesEventMatchFilters(e,t)));a=r[0]||!1;for(let e=1;ee.action_name===T));return e=Kn.getFilters(i),Kn.isTriggered(t,e,i)}return!0}}Kn.baseLogTag="OnsiteCampaignMeta";class Vn{constructor(e){this.cs_id=e.cs_id,this._id=e._id,this.references=e.references,this.trigger_wait_time=e.trigger_wait_time||null,Yn.validate(e.primary_condition)?this.primary_condition=new Yn(e.primary_condition):this.primary_condition=null,Yn.validate(e.secondary_condition)?this.secondary_condition=new Yn(e.secondary_condition):this.secondary_condition=null,Yn.validate(e.url_condition)?this.url_condition=new Yn(e.url_condition):this.url_condition=null,this.description=e.description,null!=e.trigger_delay?this.trigger_delay=new jn(e.trigger_delay):this.trigger_delay=null}static validate(e){let t=!1;return["primary_condition"].forEach((n=>{null!=Ee(e,n,null)&&(t=!0)})),t}}class jn{constructor(e){if(this.delay=Ee(e,"delay",0),this.unit=Ee(e,"unit","seconds"),this.delay_type=Ee(e,"delay_type",""),this.attribute=Ee(e,"attribute",""),Ee(e,"delay",null)&&Ee(e,"unit",null)){let e=this.delay;"minutes"!==this.unit&&"hours"!==this.unit&&"days"!==this.unit||(e*=60),"hours"!==this.unit&&"days"!==this.unit||(e*=60),"days"===this.unit&&(e*=24),this.delayInSeconds=e}else this.delayInSeconds=0}}class Yn{constructor(e){this.included_filters=new zn(Ee(e,"included_filters",null)),this.excluded_filters=new zn(Ee(e,"excluded_filters",null))}static validate(e){return!!(e&&(e=e.included_filters)&&Array.isArray(e.filters)&&e.filters.length&&null!=e.filter_operator)}}class zn{constructor(e){this.filter_operator=Ee(e,"filter_operator",hn.AND),this.filters=null===(e=Ee(e,"filters",[]))||void 0===e?void 0:e.map((e=>new qn(e)))}}class qn{constructor(e){var t=Ee(e,"action_name",null);"string"==typeof t&&(this.action_name=t),"boolean"==typeof(t=Ee(e,"executed",null))&&(this.executed=t),this.filter_type=Ee(e,"filter_type",null),t=Ee(e,"attributes",null),$n.validateJson(t)&&(this.attributes=new $n(t)),"nested_filters"===this.filter_type&&(this.filters=new zn(e))}}class $n{constructor(e){this.filters=[],this.filterOperator=Ee(e,"filter_operator",hn.AND),this.filters=Ee(e,"filters",[])}static validateJson(e){if(null==e)return!1;var t=["filters"];for(let n=0;n{var a={id:(0,ct.v4)(),channel:this.channel,topic:e,message:t};this.addToListener(a,n,i),this.target instanceof HTMLIFrameElement?this.target.contentWindow.postMessage(a,this.target.src):this.target.postMessage(a,"*")}))}static listenToChannel(e,t,n){window.addEventListener("message",(i=>{i.data&&i.data.channel&&i.data.topic&&i.data.channel===e&&i.data.topic===t&&n(i.data,(n=>{n={id:i.data.id,channel:e,topic:t,message:n},i.source.postMessage(n,i.origin)}))}))}addToListener(e,t,n){ei.pendingPromises[e.id]={resolve:t,reject:n},window.addEventListener("message",(e=>{e.data&&Ee(e.data,"channel",null)===this.channel&&null!=ei.pendingPromises[e.data.id]&&(ei.pendingPromises[e.data.id].resolve(e.data),delete ei.pendingPromises[e.data.id])}))}}ei.pendingPromises={};class ti{constructor(e){this.draftId=Ee(e,"draft_id",null),this.draftType=Ee(e,"draft_type",null),this.templateType=Ee(e,"template_type",null),this.action=Ee(e,"action",null);var t=Ee(e,"campaign_meta",{});this.locale=Ee(e,"locale",null),this.variation=Ee(e,"variation",null),this.displaySettings=new Zn({config:t.config},this.templateType)}static isValidRawJson(e){var{draft_id:t,draft_tag:n,draft_type:e}=e;return e===Z.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON?null!=t&&null!=n:null!=t}}class ni{getIframe(){return null==this.iFramePromise&&(this.iFramePromise=new Promise((e=>{const t=document.createElement("iframe");t.id="moengage-web-helper-frame",t.style.display="none",t.src=Z.WEB_HELPER_IFRAME_URL,document.body.appendChild(t),t.addEventListener("load",(()=>{this.helper=new ei(Z.IFRAME_CHANNEL,t),e(t)}))}))),this.iFramePromise}getDraftCampaignInfo(){return function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){var e="IframeHelper.getDraftCampaignInfo";try{at.log(1,e,"Loading helper frame"),yield this.getIframe(),at.log(1,e,"Helper frame loaded");var t=yield this.helper.sendMessage(Z.IFRAME_TOPICS.COOKIE_STORAGE,{TYPE:"GET",KEY:Z.COOKIE_STORAGE.TEST_DRAFT_ID});at.log(1,e,"Data from iframe: ",t);var n=t.message;at.log(1,e,"Raw test campaign",n);let i=null;return null!=n&&(ti.isValidRawJson(n)?i=new ti(n):at.error(1,e,"Data is not a valid test campaign")),i}catch(e){return null}}))}}class ii{constructor(e){this.templateType=Ee(e,"template_type",null),this.payloadType=Ee(e,"payload_type",null),this.payload=Ee(e,"payload",null),this.position=Ee(e,"position",null),this.campaignContext=Ee(e,"campaign_context",null),this.editorVersion=Ee(e,"editor_version",null),this.htmlJsonPayload=JSON.parse(Ee(e,"html_json_payload",null)),this.updatedTime=Ye(Ee(e,"updated_time")+"Z")}}var ai=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class ri{constructor(e){this.appId=e.appId,this.store=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:Z.DATABASE_NAME,storeName:Z.STORES.SERVICE_META.NAME}),this.host=e.baseDomainName}getUserSessionAttributes(){var e=function(){const e=new Date;return{day:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],hours:String(e.getHours()).padStart(2,"0")}}();const t=new dt;var n=Qe(window.location.search);return Object.assign(Object.assign({},n),{USER_TYPE:1{Kn.isValidMetaJSON(e)&&a.push(new Kn(e))})),{campaignsMeta:a,globalDelayBetweenInapps:Ee(i,"min_delay_btw_inapps",0)}}catch(t){throw at.error(1,e,"Error getting meta for inapp: ",t),new Error("Could not get meta payload")}}))}getCampaignPayload(e,t){return ai(this,void 0,void 0,(function*(){var n=ri.baseLogTag+".getCampaignPayload";let i;try{if(t){const n={};for(let e=0;e{n.push(new ii(e))})),n}catch(i){throw at.error(1,n,"Error geting payload",i),new Error("Could not get payload for "+e)}}))}getDraftCampaign(e){return ai(this,void 0,void 0,(function*(){var t=ri.baseLogTag+".getDraftCampaign";try{const t=yield this.getRequestOptions();t.queryParams=Object.assign({},t.queryParams,{locale:e.locale,variation:e.variation});var n=yield ot.get(this.host+Z.API.DRAFT_CAMPAIGN_PAYLOAD+e.draftId,t);const i=JSON.parse(n.responseText);return"JSON"===i.payload_type&&(i.payload=JSON.parse(i.payload)),new ii(i)}catch(n){return at.error(1,t,"Error geting test campaign payload",n),null}}))}getRequestOptions(e){const t=ze();return zt.getWebSDKSettings().then((n=>{var i=xe.get(r.USER_DATA);let a;const{deviceUuid:o,attributes:s}=i;if(s.map((e=>{e.key===I&&(a=e.value)})),!o)throw new Error("device_unique_id not found in localStorage.");var l=Ke()?"mweb":"web";return i=je(),{headers:{"Content-Type":"application/json","MOE-APPKEY":this.appId},queryParams:Object.assign({sdk_ver:t.getSdkVersion(),unique_id:o,uid:n.configs.shouldSendUID?a:void 0,os:l},i),postData:e||{}}})).catch((e=>{throw new Error("Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}sendDeliveryFunnelStats(e,t){return ai(this,void 0,void 0,(function*(){const n=ri.baseLogTag+".sendDeliveryFunnelStats";try{var i=yield this.getRequestOptions(null);return ot.post(this.host+Z.API.STATS,Object.assign(Object.assign({},i),{headers:Object.assign(Object.assign({},i.headers),{"MOE-INAPP-BATCH-ID":t}),postData:e})).then((()=>{at.log(1,n,"Delivery Funnel stats sent to Moengage: ",e)})).catch((e=>{at.warn(1,n,"Error sending campaign stats: ",e)}))}catch(i){at.warn(1,n,"Error sending campaign stats: ",i)}}))}}ri.baseLogTag="OnsiteApi";class oi{constructor(){this.isExitIntentShown=!1,this.isPopStateEventBound=!1}onScroll(e){const t=oi.baseLogTag+".onScroll";null==e&&(e=()=>{});var n=oi.throttle((()=>{at.remoteLogTracking(1,"info",t,"Scrolled percent:",oi.getScrollPercent()),e(oi.getScrollPercent())}),Z.SCROLL_CAMPAIGN_THROTTLING_TIME);return e(oi.getScrollPercent()),window.addEventListener("scroll",n),n}onMobileTabChange(e){const t=oi.baseLogTag+".onMobileTabChange";document.addEventListener("visibilitychange",(()=>{this.isExitIntentShown||"hidden"!==document.visibilityState||(at.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0)}))}onMobileBackHit(e){const t=oi.baseLogTag+".onMobileBackHit";setTimeout((()=>{this.isPopStateEventBound=!0,window.addEventListener("popstate",(n=>{!this.isExitIntentShown&&n.state&&"exit_intent"===n.state.moeIntent&&(at.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e("onBackClick"),this.isExitIntentShown=!0)}))}),1e3),this.setHistoryState()}setHistoryState(){window.history.state&&"no_intent"===window.history.state.moeIntent||(window.history.replaceState(Object.assign(Object.assign({},window.history.state),{moeIntent:"exit_intent"}),""),window.history.pushState(Object.assign(Object.assign({},window.history.state),{moeIntent:"no_intent"}),""))}onMobileScrollAndExit(e){const t=oi.baseLogTag+".onMobileScrollAndExit",n=document.documentElement.offsetHeight;let i,a=oi.getScrollY();0{let r=a-oi.getScrollY();r<0&&(r=0,a=oi.getScrollY()),i=oi.getScrollPercent()>Z.EXIT_INTENT.CONFIG.SCROLL_DOWN_THRESHOLD,i&&r/n>Z.EXIT_INTENT.CONFIG.SCROLL_UP_THRESHOLD/100&&(clearInterval(this.scrollExitIntentInterval),this.scrollExitIntentInterval=null,this.isExitIntentShown||(at.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0))}),Z.EXIT_INTENT.CONFIG.SCROLL_INTERVAL))}mobileExitIntent(e){this.onMobileScrollAndExit(e),this.onMobileBackHit(e),this.onMobileTabChange(e)}onExit(e){const t=oi.baseLogTag+".onExit";Ke()?this.mobileExitIntent(e):(this.exitIntentListener=n=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){var i=window.innerWidth,a=window.innerHeight;(n.clientY<0||n.clientX<0||n.clientY>=a||n.clientX>=i)&&(at.log(1,t,"TRIGGERED: EXIT INTENT"),e())})),document.addEventListener("mouseout",this.exitIntentListener,!1))}static getScrollPercent(){const e=window,t=document,n=t.documentElement,i=t.getElementsByTagName("body")[0],a=e.innerHeight||n.clientHeight||i.clientHeight;var r=document.body,o=document.documentElement;return a<(o=Math.max(r.scrollHeight,r.offsetHeight,o.clientHeight,o.scrollHeight,o.offsetHeight))?100*oi.getScrollY()/(o-a):100}static getScrollY(){let e=0;return"number"==typeof window.pageYOffset?e=window.pageYOffset:document.body&&document.body.scrollTop&&(e=document.body.scrollTop),e}static throttle(e,t){let n;return(...i)=>{n=n||window.setTimeout((()=>{n=null,e.apply(null,i)}),t)}}}oi.baseLogTag="WindowEventManager";var si=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class li{static getPendingSecondaryEventCampaign(e){return si(this,void 0,void 0,(function*(){return yield dn.pendingSecondaryEvents.getItem(e)}))}static setPendingSecondaryEventCampaign(e,t){return si(this,void 0,void 0,(function*(){yield dn.pendingSecondaryEvents.setItem(e,t)}))}static removePendingSecondaryEventCampaign(e){return si(this,void 0,void 0,(function*(){yield dn.pendingSecondaryEvents.removeItem(e)}))}static getPendingSecondaryEventKeys(){return si(this,void 0,void 0,(function*(){return yield dn.pendingSecondaryEvents.keys()}))}static getPendingTimerCampaign(e){return si(this,void 0,void 0,(function*(){return yield dn.pendingTimerCampaigns.getItem(e)}))}static setPendingTimerCampaign(e,t){return si(this,void 0,void 0,(function*(){yield dn.pendingTimerCampaigns.setItem(e,t)}))}static removePendingTimerCampaign(e){return si(this,void 0,void 0,(function*(){yield dn.pendingTimerCampaigns.removeItem(e)}))}static getPendingTimerKeys(){return si(this,void 0,void 0,(function*(){return yield dn.pendingTimerCampaigns.keys()}))}static getTriggeringPrimaryEvent(e){return si(this,void 0,void 0,(function*(){return yield dn.triggeringPrimaryEvents.getItem(e)}))}static setTriggeringPrimaryEvent(e,t){return si(this,void 0,void 0,(function*(){yield dn.triggeringPrimaryEvents.setItem(e,t)}))}static removeTriggeringPrimaryEvent(e){return si(this,void 0,void 0,(function*(){yield dn.triggeringPrimaryEvents.removeItem(e)}))}static getTriggeringPrimaryEventKeys(){return si(this,void 0,void 0,(function*(){return yield dn.triggeringPrimaryEvents.keys()}))}static removeCampaignFromStores(e){return si(this,void 0,void 0,(function*(){yield li.removePendingSecondaryEventCampaign(e),yield li.removePendingTimerCampaign(e)}))}}var ci=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class di{static setListener(e){this.listener=e}static destroy(){this.listener=null,this.deliveryStats=null}static setDeliveryStats(e){this.deliveryStats=e}static createNewTimers(){return ci(this,void 0,void 0,(function*(){var e=this.baseLogTag+".createNewTimers",t=yield li.getPendingTimerKeys();for(let a=0;aci(this,void 0,void 0,(function*(){yield this.checkAndInvokeListener(e),yield li.removeCampaignFromStores(e)}))),t);n={startTime:Date.now(),timerId:n,timer:t},yield li.setPendingTimerCampaign(e,n)}))}static checkAndInvokeListener(e){return ci(this,void 0,void 0,(function*(){var t=this.baseLogTag+".checkAndInvokeListener",n=yield Dn(e);null!=n&&n.campaignId&&((yield this.isSatisfyingEventsArray(e))?Kn.getURLFilterResult(n)&&(at.log(1,t,`Campaign ${e} satisfies the secondary_condition and the url_condition after timer has elapsed`),this.closeProximityTimerCampaigns.push(n),this.closeProximityCampaignsTimeout||(this.closeProximityCampaignsTimeout=setTimeout((()=>{this.listener(this.closeProximityTimerCampaigns),this.closeProximityTimerCampaigns=[],this.closeProximityCampaignsTimeout=null}),500))):(at.warn(1,t,`Campaign: ${e} does not satisfy secondary_condition after its timer has elapsed. Removing its entry from secondary stores`),this.deliveryStats.setStats(n,Z.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED),this.deliveryStats.setStats(n,Z.DELIVERY_FUNNEL.EVALUATION.CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED),this.deliveryStats.sendDeliveryStats([n])))}))}static checkIfPendingAction(e,t){return t===hn.AND&&!e.events.some((e=>1===e.filters.length&&!e.filters[0].executed))}static isSatisfyingEventsArray(e){return ci(this,void 0,void 0,(function*(){var t=yield li.getPendingSecondaryEventCampaign(e);if(null!=t&&t.events){if(!t.events.length)return!0;var n=t.operator;for(let e=0;e=r.timer&&(yield this.isSatisfyingEventsArray(a))&&null!=(r=yield Dn(a))&&r.campaignId&&(at.warn(1,e,`Campaign: ${a} contained 'has not executed' event(s) and had satisfied secondary_condition, but the website was closed when the timer elapsed`),i.push(r),yield this.deleteTimerAndRemoveFromStores(a))}this.sendUserNotOnAppStat(i)}))}static sendUserNotOnAppStat(e){for(let n=0;n{if("nested_filters"===e.filter_type){const t={operator:e.filters.filter_operator,filters:[]};e.filters.filters.forEach((e=>{t.filters.push(e),!1===e.executed&&(i=!0)})),n.events.push(t)}else{var t={operator:n.operator===hn.AND?hn.OR:hn.AND,filters:[e]};n.events.push(t),!1===e.executed&&(i=!0)}})),n.updated_time=Date.now(),n.time_left=1e3*e.triggerData.trigger_wait_time.wait_period,{campaignEntry:n,isCampaignTimerSet:i}}static pruneRemovedCampaigns(){return gi(this,void 0,void 0,(function*(){var e=this.baseLogTag+".pruneRemovedCampaigns";const t=(yield Cn()).map((e=>e.campaignId));var n=yield li.getPendingSecondaryEventKeys();for(let a=0;ae.toBeRemoved)))||(at.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s))):d===hn.AND&&(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(r.toBeRemoved=!0,(c===hn.OR||c===hn.AND&&h.events.every((e=>e.toBeRemoved)))&&(at.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s)))):d===hn.OR?(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(c===hn.AND||c===hn.OR&&1===h.events.length?(at.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s)):r.toBeRemoved=!0)):d===hn.AND&&(r.toBeRemoved=!0,1===h.events.length&&h.events[0].toBeRemoved&&c===hn.OR&&(at.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s))))}}a.includes(s)||i.includes(s)||(yield this.updatePendingSecondaryEvents(s,h))}}return this.sendPathTimeExpiredStat(r),yield this.clearCampaignsData(a),yield this.clearCampaignsData(i),i}))}static sendPathTimeExpiredStat(e){for(let n=0;n!e.toBeRemoved));for(let e=0;e!e.toBeRemoved))}yield li.setPendingSecondaryEventCampaign(e,t)}))}static clearCampaignsData(e){return gi(this,void 0,void 0,(function*(){for(let t=0;tgi(this,void 0,void 0,(function*(){n.includes(t)||(at.warn(1,e,`Campaign: ${t} does not exist in pendingSecondaryEvents store but exists in triggeringPrimaryEvents store. Removing it from triggeringPrimaryEvents store`),yield li.removeTriggeringPrimaryEvent(t))}))))}))}}ui.baseLogTag="SecondaryEventsManager",ui.deliveryStats=null;var pi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class hi{constructor(e){this.primaryEventsHash={},this.secondaryEventsHash={},this.messagingCampaigns=[],this.scrollCampaigns=[],this.scrollCampaignTriggered=!1,this.exitIntentCampaigns=[],this.exitCampaignTriggered=!1,this.listener=null,this.historyManager=window[Q],this.onEvent=e=>pi(this,void 0,void 0,(function*(){var t=hi.baseLogTag+".onEvent";try{null!=this.primaryEventsHash[e.name]&&(yield this.handlePrimaryEvent(e)),null!=this.secondaryEventsHash[e.name]&&(yield this.handleSecondaryEvent(e))}catch(e){at.error(1,t,"Error occurred during check event trigger campaigns: ",e)}})),this.onScroll=e=>pi(this,void 0,void 0,(function*(){const t=hi.baseLogTag+".onScroll";try{if(this.scrollCampaigns&&0pi(this,void 0,void 0,(function*(){var i,a=null===(i=null===(a=null===(i=null===(a=null===(i=null==n?void 0:n.triggerData)||void 0===i?void 0:i.primary_condition)||void 0===a?void 0:a.included_filters)||void 0===i?void 0:i.filters[0])||void 0===a?void 0:a.attributes)||void 0===i?void 0:i.filters[0];a&&(i=new pt(a.name,a.value),i=yield Ht.createEvent(_,[i]),Kn.getFilterResult(i,n)&&e>a.value&&!this.scrollCampaignTriggered&&(this.scrollCampaignTriggered=!0,window.removeEventListener("scroll",this.scrollListenerCallback),at.log(1,t,"Triggered Scroll campaign"),this.trigger([n],i)))}))))}}catch(n){at.error(1,t,"Error occurred in triggering scroll campaigns ",n)}})),this.onExit=e=>pi(this,void 0,void 0,(function*(){var t=hi.baseLogTag+".onExit";try{if(0Kn.getFilterResult(i,e)));n.length?(at.log(1,t,"Triggered Exit Intent campaign: ",n),this.trigger(n,i)):("onBackClick"===e&&window.history.back(),at.log(1,t,"No Exit Intent campaign is eligible."))}}catch(n){at.error(1,t,"Error occurred in triggering exit intent campaigns ",n)}})),this.messagingCampaigns=e,this.windowEventManager=new oi}onTrigger(e){this.listener=e}handlePrimaryEvent(e){return pi(this,void 0,void 0,(function*(){var t=hi.baseLogTag+".handlePrimaryEvent",n=this.primaryEventsHash[e.name];const i=[],a=[];for(let e=0;eKn.didPrimaryEventFilterTrigger(e,t)));o.length&&(yield ui.createPendingSecondaryEvents(o,e)),o=a.filter((t=>Kn.getFilterResult(e,t))),o.length&&(at.log(1,t,`Campaigns triggered for event ${e.name}: `+o.length),this.trigger(o,e))}))}handleSecondaryEvent(e){return pi(this,void 0,void 0,(function*(){var t=hi.baseLogTag+".handleSecondaryEvent",n=yield ui.updatePendingSecondaryEventsHistory(e,this.secondaryEventsHash[e.name]);let i=[];for(let e=0;eKn.getURLFilterResult(e))),i.length&&(at.log(1,t,`Campaigns triggered by secondary event "${e.name}": `+i.length),this.trigger(i))}))}getCampaignsFromHash(e){return pi(this,void 0,void 0,(function*(){const t=[];var n=this.primaryEventsHash[e];if(null!=n&&n.length)for(let e=0;e{this.addEntryInEventsHash(this.primaryEventsHash,t.action_name,e.campaignId)}))}createSecondaryEventsHash(e){const t=Ee(e,"triggerData.secondary_condition.included_filters.filters",[]);null!=t&&t.forEach((t=>{"nested_filters"===t.filter_type?t.filters.filters.forEach((t=>{this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)})):this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)}))}startWatching(){return pi(this,void 0,void 0,(function*(){hi.baseLogTag,this.messagingCampaigns.forEach((e=>{this.createPrimaryEventsHash(e),this.createSecondaryEventsHash(e)})),this.historyManager&&(this.historyManager.getHistory().forEach(this.onEvent),this.historyManager.addEventListener(this.onEvent)),this.scrollCampaignTriggered=!1,this.scrollCampaigns=this.messagingCampaigns.filter((e=>An(e,_))),0An(e,b))),0this.active,this.campaignMeta=e,this.data=t,this.active=!1;const n=Ee(e,"triggerData.trigger_delay.delayInSeconds",0)||0;this.waitForDelay=new Promise((e=>{this.delayTimer=setTimeout((()=>{e()}),1e3*n)}))}setIsActive(e){this.active=e}}const fi={CENTER:{position:"absolute",top:"50%",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, -50%)"},CENTER_LEFT:{position:"absolute",top:"50%",left:"10px",bottom:"auto",right:"auto",transform:"translate(0,-50%)"},CENTER_RIGHT:{position:"absolute",top:"50%",right:"10px",bottom:"auto",left:"auto",transform:"translate(0,-50%)"},TOP_LEFT:{position:"absolute",top:"10px",left:"10px",bottom:"auto",right:"auto"},TOP_CENTER:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},TOP_RIGHT:{position:"absolute",top:"10px",right:"10px",bottom:"auto",left:"auto"},BOTTOM_LEFT:{position:"absolute",bottom:"10px",left:"10px",top:"auto",right:"auto"},BOTTOM_CENTER:{position:"absolute",left:"50%",bottom:"10px",top:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM_RIGHT:{position:"absolute",bottom:"10px",right:"10px",top:"auto",left:"auto"},TOP:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM:{position:"absolute",bottom:"0",top:"auto",right:"auto",left:"50%",transform:"translate(-50%, 0)"},LEFT:{position:"absolute",left:"0",bottom:"auto",right:"auto",top:"auto"},RIGHT:{position:"absolute",right:"0",bottom:"auto",left:"auto",top:"auto"}},vi=e=>{try{return!Si()&&window.Moengage.onsite.displayManager.campaignRenderMap[e].campaignMeta}catch(t){at.error(1,"OsmFunctions.getCampaignMeta","Campaign meta not found: "+e)}},Si=()=>!!window.Moengage.onsite.displayManager.testCampaign&&(at.log(1,"OsmFunctions.isTestCampaign","Test campaign element. No data will be sent to BE right now. We'll start tracking events once the campaign is live"),!0);var Ei=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};function yi(e,t,n){return Ei(this,void 0,void 0,(function*(){const i=Pn(t),a=/moe-campaign-id/g;yield Ei(this,void 0,void 0,(function*(){try{let l=e.root;const{styles:c,scripts:d}=e,g=document.createElement("div");g.id=i,n.parentNode.insertBefore(g,n);const u=document.querySelector("#"+i),p=new DOMParser;l=l.replace(a,t);var r=p.parseFromString(l,"text/html");yield function(e){return Ei(this,void 0,void 0,(function*(){try{const t=e.getElementsByTagName("a");for(let e=t.length-1;0<=e;e--)""===t[e].getAttribute("href")&&t[e].removeAttribute("href")}catch(e){at.error(2,"InsertCustomHtmlJs.removeEmptyHrefTags","Error while removing Empty href attributes",e)}}))}(r),function(e){try{["trackEvent","trackClick","trackDismiss","dismissMessage","leadGenFormSubmit","fetchRatingValue"].forEach((n=>{!function(e,n){e.querySelectorAll("[onclick]").forEach((e=>{var i=e.getAttribute("onclick").replace(new RegExp(n+"\\((.*?)\\)","g"),((e,i)=>i?n+`('${t}',${i})`:n+`('${t}')`));e.setAttribute("onclick",i)}))}(e,n)}))}catch(e){at.error(2,"InsertCustomHtmlJs.addCampaignId","Error while adding Campaign Id",e)}}(r);const h=c.map((e=>p.parseFromString(e,"text/html").head.childNodes[0]));var o=d.map((e=>(e=e.replace(a,t),p.parseFromString(e,"text/html").head.childNodes[0]))),s=h.map((e=>new Promise(((t,n)=>{!function(e){const{node:t,onLoad:n,onError:a}=e;t instanceof HTMLMetaElement||"dns-prefetch"===t.getAttribute("rel")?n():(t.onload=()=>n(),t.onerror=()=>a()),document.querySelector("#"+i).appendChild(t)}({node:e,onLoad:t,onError:n})}))));yield Promise.all(s).catch((e=>{at.warn(1,"InsertCustomHtmlJs","Error loading Styles",(null==e?void 0:e.message)||"")}));const m=r.body.childNodes[0];u.appendChild(m),[...m.querySelectorAll(".brz-embed-code script")].map((e=>{!function(e){const t=document.createElement("script");t.innerHTML=e.innerHTML;for(let a=0;a{const r=document.createElement("script");for(let n=0;n{window.Brz.emit("init.dom",window.jQuery(m)),at.log(1,"InsertCustomHtmlJs","Custom HTML/JS DOM Level OSM Insertion: "+i)})).catch((e=>{at.warn(1,"InsertCustomHtmlJs","Error loading script",(null==e?void 0:e.message)||"")}))}catch(e){at.error(2,"InsertCustomHtmlJs","Failed to Insert OSM into DOM: "+i)}}))}))}var bi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class _i{constructor(){this.renderListener=null,this.initializationPromiseObject=null,this.campaignRenderOrder=[],this.campaignRenderMap={},this.dismissTestInapp=e=>{this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"),this.removeOSMPusher(),this.pushCardsTemplate(0),setTimeout((()=>{var t;return null===(t=document.getElementById("moe-onsite-campaign-"+e))||void 0===t?void 0:t.remove()}),0)},this.dismissInapp=e=>{if(0!==this.getActiveCampaigns().length){const t=this.getActiveCampaigns();setTimeout((()=>{t.forEach((t=>{t.campaignMeta.campaignId===e&&(t.iframe||t.osmDivSelector).remove()}))}),0),this.campaignRenderMap[e].setIsActive(!1),clearInterval(this.campaignRenderMap[e].dismissInterval),this.renderAllActiveCampaigns()}else this.dismissTestInapp(e)},this.clickTracker=vn,this.dismissEvent=En,this.startInitialization(),this.initialInlineBodyStyle=document.body.getAttribute("style")}startInitialization(){return bi(this,void 0,void 0,(function*(){var e=_i.baseLogTag+".startInitialization";try{null==this.initializationPromiseObject&&(this.initializationPromiseObject=new st),this.initializationPromiseObject.res()}catch(t){at.error(1,e,"Error initializing display managaer:",t)}}))}getOSMPusher(e){const t=document.createElement("div");if(t.id=Z.PUSH_BANNER,t.style.setProperty("display","block","important"),t.style.height=e+"px","FRAMESET"===document.body.nodeName){const e=document.head;e.parentNode.insertBefore(t,e)}else{const e=document.body.firstChild;e.parentNode.insertBefore(t,e)}return t}removeOSMPusher(){var e;null!==(e=document.getElementById(Z.PUSH_BANNER))&&void 0!==e&&e.remove()}queueDraftCampaign(e,t){return bi(this,void 0,void 0,(function*(){var n=_i.baseLogTag+".queueDraftCampaign";try{yield this.initializationPromiseObject.p,e.position=t.position,this.testCampaign=e;var i=!("1"!==t.editorVersion||!t.htmlJsonPayload);const a=!i&&_i.createDefaultIframe(this.testCampaign.draftId,t.payload);let r;at.warn(1,n,"Going to render test campaign "+e.draftId),r="FRAMESET"===document.body.nodeName?this.getOSMPusher(0):document.body.firstChild,i?(yield yi(t.htmlJsonPayload,this.testCampaign.draftId,r),this.renderTestCampaign(e,a,t)):(r.parentNode.insertBefore(a,r),a.onload=()=>{a.contentWindow.postMessage({campaignId:e.draftId},"*"),"1"===t.editorVersion?this.handleBridgeInsertion(a.contentDocument,e.draftId):this.handleClassBasedTrackingForTestCampaign(a,t,e),this.renderTestCampaign(e,a)})}catch(e){at.error(1,n,"Error queueing draft campaign",e)}}))}renderTestCampaign(e,t,n){return bi(this,void 0,void 0,(function*(){if(t){var i;t.style.visibility="hidden",t.style.display="block",t.style.zIndex="2147483647",e.displaySettings.config.blocking?(t.style.height=window.innerHeight+"px",t.style.width="100%"):(t.style.height=getComputedStyle(t.contentDocument.body).height,t.style.width=getComputedStyle(t.contentDocument.body).width,e.templateType===mn.POP_UP&&(t.style.margin="0px auto"),-1bi(this,void 0,void 0,(function*(){yield yi(t.htmlJsonPayload,e.campaignId,n)})):(i=_i.createDefaultIframe(e.campaignId,this.campaignRenderMap[e.campaignId].data.payload),this.campaignRenderMap[e.campaignId].iframe=i),yield this.campaignRenderMap[e.campaignId].waitForDelay,yield this.canCampaignBeRendered(e)){if(at.warn(1,a,"Going to render "+e.campaignId),(null===(n=t.payload)||void 0===n?void 0:n.code)===Z.GCG_ERROR_CODE)return at.warn(1,a,`Can not render ${e.campaignId} as it falls under Control Group.`),void Sn(e,"OSM",!0)();this.campaignRenderMap[e.campaignId].setIsActive(!0),Sn(e,"OSM")(),null!=this.renderListener&&this.renderListener(e),this.renderAllActiveCampaigns()}else at.warn(1,a,"Can not render "+e.campaignId)}catch(i){at.error(1,a,"Error queuing campaign "+e.campaignId,i)}}))}renderAllActiveCampaigns(){return bi(this,void 0,void 0,(function*(){var e,t=_i.baseLogTag+".renderAllActiveCampaigns";const n=this.getActiveCampaigns();if(this.restoreBodyStyle(),0{Ti.setScrollState(n),n[i].iframe.contentWindow.postMessage({campaignId:n[i].campaignMeta.campaignId},"*"),"1"===n[i].campaignMeta.editorVersion?(this.handleBridgeInsertion(n[i].iframe.contentDocument,n[i].campaignMeta.campaignId,n[i].campaignMeta),this.changeAnchorTagReDirectionMethod(n[i].iframe)):this.handleClassBasedTracking(n[i]),n[i].onFrameLoad.res()})}yield n[i].onFrameLoad.p,n[i].isJSONPayloadApproach?(at.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].osmDivSelector.style.zIndex=(2147483647-(n.length-i-1)).toString(),this.liveCampaignPositionStyling(n[i].campaignMeta,n[i].osmDivSelector)):(n[i].iframe.style.visibility="hidden",n[i].iframe.style.display="block",at.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].iframe.style.zIndex=(2147483647-(n.length-i-1)).toString(),n[i].iframe.style.margin="0",n[i].campaignMeta.display.config.blocking?(n[i].iframe.style.height=window.innerHeight+"px",n[i].iframe.style.width="100%"):(n[i].iframe.style.height=getComputedStyle(n[i].iframe.contentDocument.body).height,n[i].iframe.style.padding.includes("10px")?n[i].iframe.style.width=parseInt(getComputedStyle(n[i].iframe.contentDocument.body).width)+20+"px":n[i].iframe.style.width=getComputedStyle(n[i].iframe.contentDocument.body).width,n[i].campaignMeta.templateType===mn.POP_UP&&(n[i].iframe.style.margin="0px auto"),n[i].data.payload&&-1{const e=this.campaignRenderMap[n[i].campaignMeta.campaignId];e&&e.isActive()&&(this.dismissInapp(n[i].campaignMeta.campaignId),window.MoeFocusHandler&&window.MoeFocusHandler(),En(n[i].campaignMeta,"OSM",!0))}),e))}this.bannerLiveCampaignsStyling(n)}}))}restoreBodyStyle(){this.removeOSMPusher(),this.pushCardsTemplate(0);let e=0;Object.keys(this.campaignRenderMap).forEach((t=>{this.campaignRenderMap[t].campaignMeta.templateType===mn.POP_UP&&this.campaignRenderMap[t].isActive()&&e++})),1<=e||(this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"))}canCampaignBeRendered(e){return bi(this,void 0,void 0,(function*(){var t=_i.baseLogTag+".queueLiveCampaign";try{var n=yield dn.campaingsStatsStore.getItem(e.campaignId),i=yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.GLOBAL_DELAY),a=yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME);return _n.isValid(e,n)&&_n.isValidMessagingCampaign(e,n,i,a,this.getActiveCampaigns())&&Kn.getURLFilterResult(e)}catch(n){at.error(1,t,`Error checking if campaign ${e.campaignId} can be rendered:`,n)}return!1}))}static createDefaultIframe(e,t){_i.baseLogTag,e=Pn(e);const n=document.createElement("iframe");return n.setAttribute("id",e),n.style.left="0px",n.style.top="0px",n.style.bottom="0px",n.style.right="0px",n.style.border="0px none",n.style.height="100%",n.style.width=window.innerWidth.toString()+"px",n.style.padding="0",n.style.overflow="hidden",n.style.overflowY="hidden",n.style.zIndex="999999",n.style.display="none",n.style.position="fixed",n.setAttribute("srcdoc",t),n}onRender(e){this.renderListener=e}getActiveCampaigns(){return this.campaignRenderOrder.map((e=>this.campaignRenderMap[e])).filter((e=>e.isActive()))}destroy(){this.getActiveCampaigns().forEach((e=>{e.setIsActive(!1)})),this.renderAllActiveCampaigns(),this.campaignRenderOrder=[],this.campaignRenderMap={}}adjustPositionOfCampaign(e,t,n){t&&(Object.assign(e,fi[t]),Ke()&&n&&this.addMarginInMweb(e,t))}addMarginInMweb(e,t){const n={paddingLeft:"10px",paddingRight:"10px",marginTop:"0",marginBottom:"0"};"TOP"===t&&(n.marginTop="10px"),"BOTTOM"===t&&(n.marginBottom="10px"),Object.assign(e,n)}handleBridgeInsertion(e,t,n){var i=_i.baseLogTag+".handleBridgeInsertion";try{e.head.append(((e,t)=>{const n=document.createElement("script");return n.type="text/javascript",n.text=(t=t,`\n const moeSDK = window.parent.Moengage;\n let moeOsmCampaignMeta = ${JSON.stringify(e)};\n const moengage = {\n trackEvent: function (eventName, eventAttr, isNonInteractive) {\n if(moeOsmCampaignMeta) {\n return moeSDK.track_event(eventName, eventAttr);\n }\n return Promise.resolve();\n },\n trackClick: function (id) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.clickTracker(OsmCampaignMeta, 'OSM', {\n widget_id: id,\n })();\n }\n return Promise.resolve();\n },\n trackDismiss: function (isAuto = false) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.dismissEvent(OsmCampaignMeta, 'OSM', isAuto);\n }\n return Promise.resolve();\n },\n setAlias: function (data) {\n return moeSDK.update_unique_user_id(data);\n },\n setUniqueId: function (data) {\n return moeSDK.add_unique_user_id(data);\n },\n destroySession: function () {\n return moeSDK.destroy_session();\n },\n setUserName: function (data) {\n return moeSDK.add_user_name(data);\n },\n setFirstName: function (data) {\n return moeSDK.add_first_name(data);\n },\n setLastName: function (data) {\n return moeSDK.add_last_name(data);\n },\n setEmailId: function (data) {\n return moeSDK.add_email(data);\n },\n setMobileNumber: function (data) {\n return moeSDK.add_mobile(data);\n },\n setGender: function (data) {\n return moeSDK.add_gender(data);\n },\n setBirthDate: function (data) {\n //iso date format only\n return moeSDK.add_birthday(data);\n },\n setUserAttribute: function (name, value) {\n return moeSDK.add_user_attribute(name, value);\n },\n dismissMessage: function () {\n setTimeout(() => {\n moeSDK.onsite.displayManager.dismissInapp('${t}');\n }, 100)\n },\n showPushOptIn: function (config) {\n return moeSDK.call_web_push(config);\n },\n copyText: function (selector) {\n return new Promise((res, rej) => {\n if(!selector) rej();\n var text = document.querySelector(selector);\n if(text.textContent) {\n navigator.clipboard.writeText(text.textContent);\n res(null);\n }\n else {\n text.select();\n text.setSelectionRange(0, 99999);\n navigator.clipboard.writeText(text.value);\n res(null);\n }\n })\n }\n }\n const MoeOsm = moengage;\n `),n.setAttribute("data-moe-script","1"),n})(n,t)),at.log(2,i,"JS-bridge script inserted successfully",t)}catch(e){at.warn(2,i,"Failed to insert OSM JS Bridge: ",t)}}handleClassBasedTrackingForTestCampaign(e,t,n){const i=_i.baseLogTag+".handleClassBasedTrackingForTestCampaign";var a=e=>Array.prototype.slice.call(e),r=a(e.contentDocument.getElementsByClassName(Z.CSS_SELECTORS.DISMISS_INAPP)),o=a(e.contentDocument.getElementsByClassName(Z.CSS_SELECTORS.CLICK_INAPP));if(a=a(e.contentDocument.getElementsByTagName("a")),0===r.length&&at.warn(1,i,"No dismiss class items present in this template"),0===o.length&&at.warn(1,i,"No click class items present in this template"),-1{e.target&&e.target.classList.contains(Z.CSS_SELECTORS.CLICK_INAPP)&&at.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live"),e.target&&e.target.classList.contains(Z.CSS_SELECTORS.DISMISS_INAPP)&&this.dismissTestInapp(n.draftId)}));else{for(const e of o)e.addEventListener("click",(e=>{at.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live")}));for(const e of r)e.addEventListener("click",(()=>{this.dismissTestInapp(n.draftId)}))}for(const e of a)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}handleClassBasedTracking(e){var t=_i.baseLogTag+".handleClassBasedTracking",n=e=>Array.prototype.slice.call(e);const i=e.iframe;var a=n(i.contentDocument.getElementsByClassName(Z.CSS_SELECTORS.DISMISS_INAPP)),r=n(i.contentDocument.getElementsByClassName(Z.CSS_SELECTORS.CLICK_INAPP));if(n=n(i.contentDocument.getElementsByTagName("a")),0===a.length&&at.warn(1,t,"No dismiss class items present in this template"),0===r.length&&at.warn(1,t,"No click class items present in this template"),e.data.payload&&(-1{var n;t.target&&t.target.classList.contains(Z.CSS_SELECTORS.CLICK_INAPP)&&(n=t.target.dataset.id,vn(e.campaignMeta,"OSM",{widget_id:n})()),t.target&&t.target.classList.contains(Z.CSS_SELECTORS.DISMISS_INAPP)&&(this.dismissInapp(e.campaignMeta.campaignId),t.target.classList.contains(Z.CSS_SELECTORS.CLICK_INAPP)||En(e.campaignMeta,"OSM"))}));else{for(const t of r)t.addEventListener("click",(t=>{t=t.target.dataset.id,vn(e.campaignMeta,"OSM",{widget_id:t})()}));for(const t of a)t.addEventListener("click",(()=>{this.dismissInapp(e.campaignMeta.campaignId),t.classList.contains(Z.CSS_SELECTORS.CLICK_INAPP)||En(e.campaignMeta,"OSM")}))}for(const e of n)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}changeAnchorTagReDirectionMethod(e){var t,n=_i.baseLogTag+".changeAnchorTagReDirectionMethod";try{for(const n of(t=e.contentDocument.getElementsByTagName("a"),Array.prototype.slice.call(t))){var i=n.getAttribute("target"),a=n.getAttribute("href");a&&"_parent"===i&&(n.setAttribute("onclick",`setTimeout(()=>{window.open('${a}','_parent')})`),n.removeAttribute("href"))}at.log(1,n,"Anchor Tag Href Rendering Changed to onClick for Campaign Frame: "+e.id)}catch(t){at.error(1,n,"Failed to Change Anchor Tag Href Rendering for Campaign Frame: "+e.id)}}liveCampaignPositionStyling(e,t){var n=_i.baseLogTag+".liveCampaignPositionStyling";try{e.templateType===mn.BANNER?e.display.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===mn.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),at.log(1,n,"Added Position Styles for CampaignId: "+e.campaignId)}catch(t){at.error(1,n,"Failed adding Styles for CampaignId: "+e.campaignId)}}testCampaignPositionStyling(e,t){var n=_i.baseLogTag+".testCampaignPositionStyling";try{e.templateType===mn.BANNER?e.displaySettings.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===mn.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),at.log(1,n,"Added Position Styles for CampaignId: "+e.draftId)}catch(t){at.error(1,n,"Failed adding Styles for CampaignId: "+e.draftId)}}bannerTestCampaignStyling(e,t,n){var i,a=_i.baseLogTag+".bannerTestCampaignStyling";try{let n,r,o=!0;t?(n=parseInt(getComputedStyle(t.contentDocument.body).height),o=-1e.campaignMeta.templateType===mn.BANNER)).length-1;0<=r;r--)try{if(e[r].isJSONPayloadApproach||e[r].iframe.contentDocument){let a,o=!0;e[r].isJSONPayloadApproach?a=parseInt(getComputedStyle(e[r].osmDivSelector.querySelector(".brz-container")).height):(a=parseInt(getComputedStyle(e[r].iframe.contentDocument.body).height),o=e[r].data.payload&&-1{this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED)}))}getImpressionStats(e){return Ii(this,void 0,void 0,(function*(){var t=this.baseLogTag+".getImpressionStats";try{return yield dn.campaingsStatsStore.getItem(e.campaignId)}catch(n){at.error(1,t,"Error getting impression stats for "+e.campaignId,n)}}))}getLastGlobalInappShown(){return Ii(this,void 0,void 0,(function*(){return yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME)}))}getGlobalDelay(){return Ii(this,void 0,void 0,(function*(){return yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.GLOBAL_DELAY)}))}filterValidCampaigns(e){return Ii(this,void 0,void 0,(function*(){var t=this.baseLogTag+".filterValidCampaigns",n=e.map((e=>this.getImpressionStats(e)));const i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay();try{const t=yield Promise.all(n);return e.filter(((e,n)=>{if(e.templateType!==mn.SELF_HANDLED){if(!_n.isCampaignWithinFC(e,t[n]))return this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN),!1;if(!_n.hasCampaignClearedSelfDelay(e,t[n]))return this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MIN_DELAY),!1;if(!_n.hasCampaignClearedGlobalDelay(e,a,i))return this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_GLOBAL_DELAY),!1}return!_n.isCampaignExpired(e)||(this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_EXPIRED),!1)}))}catch(n){at.error(1,t,"Error filtering and sorting campaigns",n)}}))}prioritizeMessagingCampaigns(e){return Ii(this,void 0,void 0,(function*(){const t=yield this.filterValidCampaigns(e);if(0{t.campaignId!==e.campaignId&&this.deliveryStats.setStats(t,Z.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE)})),e}}))}getCampaignTagMap(e){const t={},n=[],i=[];return e.forEach((e=>{null!=e.tag&&(i.indexOf(e.tag)<0&&i.push(e.tag),null==t[e.tag]&&(t[e.tag]=[]),t[e.tag].push(e))})),i.forEach((e=>{if(null!=t[e]){var i=t[e].sort(_n.comparator);for(let e=0;ethis.getOnsitePayload(e,n)));try{const n=yield Promise.all(a);return e.filter(((e,i)=>{if(n[i]&&n[i].payload&&(e.onsitePayload=n[i],null!=e.tag&&null!=t[e.tag])){if("JSON"!==e.onsitePayload.payloadType)return!0;if((e=>{try{JSON.parse(e)}catch(e){return!1}return!0})(e.onsitePayload.payload))return!0}return!1}))}catch(a){at.error(1,i,"Error delivering personalization campaigns",a)}}}))}messagingCampaignImpression(e,t){return Ii(this,void 0,void 0,(function*(){var n=this.baseLogTag+".messagingCampaignImpression";if(e)try{var i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay(),r=this.displayManager.getActiveCampaigns();return _n.hasCampaignClearedGlobalDelay(e,a,i)?_n.canCampaignBeRenderedOverExisting(e,r.length)?Kn.getURLFilterResult(e)?null==this.displayManager.campaignRenderMap[e.campaignId]||"MOE_EXIT"!==t&&t!==_?e:(at.warn(1,n,`Can not render ${e.campaignId} `+(this.displayManager.campaignRenderMap[e.campaignId].isActive()?", as campaign is already Active.":"")),void this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN)):(at.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_CONTEXT_CHANGED)):void this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE):(at.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,Z.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_GLOBAL_DELAY))}catch(i){return void at.error(1,n,"Error delivering messaging campaign",i)}}))}mostEligibleMessagingCampaign(e,t){return Ii(this,void 0,void 0,(function*(){if(0e.templateType===mn.SELF_HANDLED)),c=a.filter((e=>e.templateType!==mn.SELF_HANDLED));0{t[e.campaignContext.cid]||(t[e.campaignContext.cid]=e.stats,e.stats={})}));var n={stats:t};this.OnsiteApiClient.sendDeliveryFunnelStats(n,this.batchId)}catch(n){at.error(1,t,"Error in sending delivery funnel stats",n)}}))}setStats(e,t){var n=(new Date).toISOString();e.stats[t]=e.stats[t]||[],e.stats[t].includes(n)||e.stats[t].push(n)}}var Ci=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Oi=new st;class Pi{constructor(e){this.initializationPomise=null,this.testDraftInfo=null,this.triggerManager=null,this.displayManager=null,this.onsiteSelfHandledTriggerListeners={},this.funnelManager=null,this.eventTriggerHandler=null,this.deliveryStats=null,this.initData=e,at.setLogLevel(e.debugLevel),this.OnsiteApiClient=new ri(this.initData),this.iframeHelper=new ni}setLogLevel(e){at.setLogLevel(e,!1)}isTestCampaignAvailable(){return Ci(this,void 0,void 0,(function*(){const e=Pi.baseLogTag+".isTestCampaignAvailable";if(window.opener){let t;window.addEventListener("message",(n=>Ci(this,void 0,void 0,(function*(){var i,a;n.data&&"inapp_test"===n.data.action&&(i=n.data,(yield ti.isValidRawJson(i))?(t=!0,a=new ti(i),at.log(1,e,"Valid test campaign data found checking TestCampaign",i),yield this.checkForTestCampaign(a)):at.error(1,e,"Data is not a valid test campaign",i),Oi.res())}))),!1),window.opener.postMessage("moe_test_osm","*"),window.opener=null,setTimeout((()=>Ci(this,void 0,void 0,(function*(){t||(yield this.checkForTestCampaign()),Oi.res()}))),100)}else Oi.res()}))}initialize(){const e=Pi.baseLogTag+".initialize";return at.log(1,e,"Initialising onsite module"),null==this.initializationPomise&&(this.initializationPomise=new Promise((t=>Ci(this,void 0,void 0,(function*(){try{yield dn.initialize(),yield this.isTestCampaignAvailable(),Oi.p.then((()=>Ci(this,void 0,void 0,(function*(){yield this.syncCampaigns();const n=yield Cn();var i=this.isExitIntentCampaignFound(n);if(i.length&&(yield this.prefetchExitIntentCampaigns(i)),i=n.filter((e=>null!=e.triggerData)),this.displayManager=new _i,this.displayManager.onRender((t=>{at.log(1,e,"Campaign rendered: "+t.campaignId),dn.serviceMetaStore.setItem(Z.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME,new Date)})),null!=this.testDraftInfo&&this.testDraftInfo.draftType===Z.DRAFT_CAMPAIGN_TPYES.ONSITE_MESSAGING){at.log(1,e,"Test campaigns present, will be showing only the test campaign."),at.log(1,e,"No live campaign will be shown till draft campaign showing");try{at.log(1,e,"Trying to render draft campaign with id "+this.testDraftInfo.draftId);var a=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo);at.log(1,e,"Test campaign payload: ",a),a&&this.displayManager.queueDraftCampaign(this.testDraftInfo,a)}catch(n){at.error(1,e,`Error fetching data for test campaign ${this.testDraftInfo.draftId}: `,n)}}else this.deliveryStats=new Di(this.initData),this.triggerManager=new hi(i),this.funnelManager=new Ai(this.initData,this.displayManager,this.deliveryStats),this.eventTriggerHandler=new wi,i=this.eventTriggerHandler.handler.bind(null,this.funnelManager,this.onsiteSelfHandledTriggerListeners,this.handlePersonalizationCampagins.bind(this),this.handleMessagingCampaigns.bind(this)),this.triggerManager.onTrigger(i),di.setListener(i),ui.setDeliveryStats(this.deliveryStats),di.setDeliveryStats(this.deliveryStats),yield di.logDeliveryFunnelForExpiredTimerCampaigns(),yield ui.updateCampaignTimeInSecondaryEventsStore(),yield di.createNewTimers(),this.triggerManager.startWatching();t(!0)}))))}catch(t){at.error(1,e,t)}}))))),this.initializationPomise}handleMessagingCampaigns(e){return Ci(this,void 0,void 0,(function*(){var t=Pi.baseLogTag+".handleMessagingCampaigns";e.onsitePayload&&(at.log(1,t,"Campaign triggered: "+e.campaignId),at.log(1,t,"Payload for campaign:",e.onsitePayload),this.displayManager.queueLiveCampaign(e,e.onsitePayload))}))}handlePersonalizationCampagins(e){return Ci(this,void 0,void 0,(function*(){const t=Pi.baseLogTag+".handlePersonalizationCampagins";0{null!=e.tag&&(at.log(1,t,"Personlization Campaign triggered: "+e.campaignId),this.onsiteSelfHandledTriggerListeners[e.tag].forEach((t=>{this.handleSelfHandledCallback(e,e.onsitePayload,t)})))}))}))}logout(){var e;return Ci(this,void 0,void 0,(function*(){var t=Pi.baseLogTag+".logout";if(at.log(1,t,"Starting module logout"),this.initializationPomise=null,this.displayManager){const t=Object.keys(this.displayManager.campaignRenderMap);null!==(e=this.displayManager.testCampaign)&&void 0!==e&&e.draftId&&t.push(null===(e=this.displayManager.testCampaign)||void 0===e?void 0:e.draftId),t.forEach((e=>{const t=document.getElementById("moe-onsite-campaign-"+e);t&&t.remove()})),this.displayManager.destroy()}this.triggerManager&&this.triggerManager.destory(),ui.destroy(),di.destroy(),this.displayManager=null,this.funnelManager=null,this.eventTriggerHandler=null,yield di.deleteAllPendingTimers(),yield dn.clear(),at.log(1,t,"Starting module logout complete")}))}checkForTestCampaign(e){return Ci(this,void 0,void 0,(function*(){var t=Pi.baseLogTag+".checkForTestCampaign";try{var n=e||(yield this.iframeHelper.getDraftCampaignInfo());null==n?(at.log(1,t,"No draft campaign found"),this.testDraftInfo=null):(at.log(1,t,"Found draft campaign: ",n),this.testDraftInfo=n,null==this.testDraftInfo.draftId&&(this.testDraftInfo.draftType=Z.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON))}catch(n){at.error(1,t,"Error getting test campaign",n)}}))}getData(e,t){return Ci(this,void 0,void 0,(function*(){const n=Pi.baseLogTag+".getData";null==t&&(at.warn(1,n,"Moengage.onsite.getData called without a providing a callback."),t=()=>{});try{if(yield this.initializationPomise,null!=this.testDraftInfo){var i;at.log(1,n,"Fetching test campaign: ",this.testDraftInfo),this.testDraftInfo.draftType===Z.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON&&(i=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo),t(null,{payload:i.payload,click:()=>{at.log(1,n,"This is a test campaign")},imp:()=>{at.log(1,n,"This is a test campaign")}}))}else{const i=yield dn.campaingsTagsStore.getItem(e);if(i){const o=yield Promise.all(i.map((e=>Dn(e))));var a=o.filter((e=>null==e.triggerData)),r=yield this.funnelManager.mostEligibleSelfHandledPersonalizationCampaigns(a,e);r&&r.onsitePayload?this.handleSelfHandledCallback(r,r.onsitePayload,t):(at.error(1,n,"Error fetching campaign payload"),t({message:"There was an error fetching data for this tag"},null))}else at.warn(1,n,"Could not find any eligible campaign for tag",e),t({message:"Could not find any eligible campaign for tag "+e},null)}}catch(i){at.error(1,n,"Error getting campaign",i)}}))}registerCallback(e,t){return Ci(this,void 0,void 0,(function*(){var n=Pi.baseLogTag+".registerCallback";try{yield this.initializationPomise,null==this.onsiteSelfHandledTriggerListeners[e]?this.onsiteSelfHandledTriggerListeners[e]=[t]:this.onsiteSelfHandledTriggerListeners[e].push(t)}catch(t){at.error(1,n,"Error setting callback for tag",e),at.error(1,n,"Error stack:",t)}}))}handleSelfHandledCallback(e,t,n){return Ci(this,void 0,void 0,(function*(){var i=Pi.baseLogTag+".handleSelfHandledCallback";if(e.campaignContext=t.campaignContext,"JSON"===t.payloadType)try{t.payload=JSON.parse(t.payload);var a=Ee(e,"triggerData.trigger_delay.delayInSeconds",0)||0;setTimeout((()=>{yn(e,"WP"),n(null,{payload:t.payload,click:t=>{vn(e,"WP",t)()},imp:Sn(e,"WP")})}),1e3*a)}catch(r){a=`Payload for campaign_id ${e.campaignId} is not a valid JSON`,at.error(1,i,a),at.error(1,i,"Payload provided:",t.payload),n({message:a},null)}else yn(e,"WP"),n(null,{payload:t.payload,click:t=>{vn(e,"WP",t)()},imp:Sn(e,"WP")})}))}syncCampaigns(){return Ci(this,void 0,void 0,(function*(){var e=Pi.baseLogTag+".syncCampaigns";try{(yield this.shouldClearMetaStorage())&&(yield dn.campaingsMetaStore.clear(),yield this.rebuildTagStore()),(yield this.shouldSaveRemoteCampaigns())&&(yield this.saveRemoteCampaigns())}catch(t){at.error(1,e,"Error getting remote campaigns: ",t)}}))}shouldClearMetaStorage(){return Ci(this,void 0,void 0,(function*(){return(yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION))!==ze().getSdkVersion()}))}shouldSaveRemoteCampaigns(){var e;return Ci(this,void 0,void 0,(function*(){var t=Pi.baseLogTag+".shouldSaveRemoteCampaigns",n=yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION),i=yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.LAST_META_CALL_TIME),a=(i=new Date(i),(new Date).getTime());return null==i||a-i>Z.META_REFRESH_TIME||(at.remoteLogTracking(1,"info",t,"Last fetch was less than 15 mins ago at ",i),n!==ze().getSdkVersion()?(at.remoteLogTracking(1,"info",t,"Version change detected. Will proceed to fetch latest campaigns"),!0):!(!(n=yield dn.serviceMetaStore.getItem(Z.STORES.SERVICE_META.KEYS.UNIQUE_ID))||n===(null===(e=xe.get(r.USER_DATA))||void 0===e?void 0:e.deviceUuid)||(at.remoteLogTracking(1,"info",t,"Unique device id change detected. Will proceed to fetch latest campaigns"),0)))}))}saveRemoteCampaigns(){return Ci(this,void 0,void 0,(function*(){var e=Pi.baseLogTag+".saveRemoteCampaigns";yield dn.campaingsMetaStore.clear(),yield dn.exitIntentCampaignStore.clear();var t=yield this.OnsiteApiClient.getCampaignsMeta();null!=t&&(yield this.addCampaignsToDB(t.campaignsMeta),at.log(1,e,"Inapp campaigns meta saved!")),yield ui.pruneRemovedCampaigns(),yield ui.removeStaleTriggeringPrimaryEventCampaigns(),yield dn.serviceMetaStore.setItem(Z.STORES.SERVICE_META.KEYS.GLOBAL_DELAY,t.globalDelayBetweenInapps),yield dn.serviceMetaStore.setItem(Z.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION,ze().getSdkVersion())}))}addCampaignsToDB(e){return Ci(this,void 0,void 0,(function*(){var t=Pi.baseLogTag+".addCampaignsToDB";at.log(1,t,`Adding/Updating ${e.length} campaigns in DB`,e.map((e=>e.campaignId)));try{yield Promise.all(e.map((e=>dn.campaingsMetaStore.setItem(e.campaignId,e)))),yield this.rebuildTagStore()}catch(e){at.error(1,t,"Error saving remote campaigns:",e)}}))}rebuildTagStore(){return Ci(this,void 0,void 0,(function*(){var e=Pi.baseLogTag+".rebuildTagStore";try{yield dn.campaingsTagsStore.clear();var t=yield Cn();const e={};for(const n of t)null!=n.tag&&(null==e[n.tag]&&(e[n.tag]=[]),e[n.tag].push(n.campaignId));const n=[];yield dn.campaingsTagsStore.clear();for(const t in e)e.hasOwnProperty(t)&&n.push(dn.campaingsTagsStore.setItem(t,e[t]));yield Promise.all(n)}catch(t){at.error(1,e,"Error updating tags store:",t)}}))}isExitIntentCampaignFound(e){return e.filter((e=>e.templateType!==mn.SELF_HANDLED&&An(e,b)))}prefetchExitIntentCampaigns(e){return Ci(this,void 0,void 0,(function*(){var t=Pi.baseLogTag+".prefetchExitIntentCampaigns";const n=yield Ht.createEvent("MOE_EXIT",[]),i=(yield Tn(e)).filter((e=>Kn.getFilterResult(n,e)));if(!i||!i.length)return at.log(1,t,"Exit intent campaign not eligible to prefetch"),!1;{const e=yield wn(i[0]);if(!e||!e.onsitePayload||e.onsitePayload.updatedTime.getTime()!==i[0].updatedTime.getTime()){var a=i[0].campaignId;const e=yield this.OnsiteApiClient.getCampaignPayload(i[0]);(e.payload||e.htmlJsonPayload)&&(e.updatedTime=i[0].updatedTime,yield dn.exitIntentCampaignStore.setItem(a,e),at.log(1,t,"Exit intent campaign prefetched: "+a))}}}))}refresh(){return Ci(this,void 0,void 0,(function*(){Wi.onsite.appId&&(yield Gi(),Hi())}))}}function Ri(){var e,t;const n="pageChangeHandler";window.Moengage.pageChangeHandlerCallingTime=(new Date).getTime(),(()=>{var e;const t=window.Moengage;if(t.onsite&&t.onsite.displayManager){t.onsite.triggerManager&&null!==(e=null===(e=t.onsite.triggerManager.primaryEventsHash)||void 0===e?void 0:e.MOE_PAGE_SCROLL)&&void 0!==e&&e.length&&window.removeEventListener("scroll",t.onsite.triggerManager.getScrollListenerCallback());const n=t.onsite.displayManager;Object.keys(n.campaignRenderMap).forEach((e=>{document.getElementById("moe-onsite-campaign-"+e)&&document.getElementById("moe-onsite-campaign-"+e).remove(),n.campaignRenderMap[e].isActive()&&n.dismissInapp(e),clearTimeout(n.campaignRenderMap[e].delayTimer),delete n.campaignRenderMap[e],n.campaignRenderOrder=n.campaignRenderOrder.filter((t=>t!==e))})),setTimeout((()=>{Ke()?t.onsite.triggerManager.windowEventManager.isPopStateEventBound&&(t.onsite.triggerManager.windowEventManager.setHistoryState(),t.onsite.triggerManager.windowEventManager.isExitIntentShown=!1,t.onsite.triggerManager.windowEventManager.scrollExitIntentInterval=null):document.removeEventListener("mouseout",t.onsite.triggerManager.windowEventManager.exitIntentListener)}),0)}t.onsite.initializationPomise=null,t.onsite.initialize()})(),window.MoeFocusHandler&&window.MoeFocusHandler(),window.Moengage.shouldClearPrevEvents=(new Date).getTime(),Gt.clear(),Gt.clearListeners(),Wi.track_page_view();var i=Wi.onsite.triggerManager;0<(null===(e=null==i?void 0:i.exitIntentCampaigns)||void 0===e?void 0:e.length)&&Ke()&&null!==(t=null==i?void 0:i.windowEventManager)&&void 0!==t&&t.onMobileScrollAndExit(i.onExit),zt.getWebSDKSettings().then((e=>{e.isDomainLevelStorage&&xe.copyKeysFromCookie(),null!=e&&e.configs.isCardsModuleEnabled&&Wi.cards&&(Wi.cards.checkCacheAndSaveRemote(de),Wi.cards.displayManager.closeIframe()),null!=e&&e.configs.isWebPersonalisationModuleEnabled&&(null!==(e=window.MoeWebP)&&void 0!==e&&e.getLiveExperiences(),at.log(1,n,"webP sync function called"))})).catch((e=>{at.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}Pi.baseLogTag="MoeOnsite",window[Z.OSM_MODULE]=Pi,window.MoeOsm=(at.log(1,"OsmFunctions","Osm Functions for tracking user behaviour"),{trackEvent:(e,t,n,i)=>(e=vi(e),{}.constructor===n.constructor&&e?(n=Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName},e.campaignContext),n),window.Moengage.track_event(t,n)):Promise.resolve()),trackClick:(e,t)=>(e=vi(e))?window.Moengage.onsite.displayManager.clickTracker(e,"OSM",{widget_id:t})():Promise.resolve(),trackDismiss:(e,t=!1)=>(e=vi(e))?window.Moengage.onsite.displayManager.dismissEvent(e,"OSM",t):Promise.resolve(),setAlias:e=>window.Moengage.update_unique_user_id(e),setUniqueId:e=>window.Moengage.add_unique_user_id(e),destroySession:()=>window.Moengage.destroy_session(),setUserName:e=>window.Moengage.add_user_name(e),setFirstName:e=>window.Moengage.add_first_name(e),setLastName:e=>window.Moengage.add_last_name(e),setEmailId:e=>window.Moengage.add_email(e),setMobileNumber:e=>window.Moengage.add_mobile(e),setGender:e=>window.Moengage.add_gender(e),setBirthDate:e=>window.Moengage.add_birthday(e),setUserAttribute:(e,t)=>window.Moengage.add_user_attribute(e,t),dismissMessage(e){setTimeout((()=>{window.Moengage.onsite.displayManager.dismissInapp(""+e)}),100)},showPushOptIn:e=>window.Moengage.call_web_push(e),copyText:e=>new Promise(((t,n)=>{e||n();const i=document.querySelector(e);i.textContent?navigator.clipboard.writeText(i.textContent):(i.select(),i.setSelectionRange(0,99999),navigator.clipboard.writeText(i.value)),t(null)}))});class Li{constructor(){this.getDeviceUniqueId=e=>{window.addEventListener(k,(t=>{t.detail.name===M.DEVICE_UUID&&(t=t.detail.data,e(t))}))}}onUpdateDeviceId(e){this.getDeviceUniqueId(e)}trackClick(e,t){return Li.track("MOE_WEBP_MESSAGE_CLICKED",e,t)}trackImpression(e){return Li.track("MOE_WEBP_MESSAGE_SHOWN",e)}static track(e,t,n){var i=Li.baseLogTag+".track";if("string"==typeof t)try{t=JSON.parse(t)}catch(e){return void at.error(2,i,"Error parsing JSON string:",e)}var a=t&&t.cid.split("_")[0];if(!a)return Promise.reject();try{return ze()?(at.log(1,i,e+": Event Tracked"),ze().track_event(e,Object.assign({campaign_id:a},t))):(window.moengage_q=window.moengage_q||[]).push({f:"track_event",a:[e,Object.assign(Object.assign({campaign_id:a},t),n)]}),Promise.resolve()}catch(e){at.error(2,i,"Failed Tracking expression",e)}}}Li.baseLogTag="Web Personalisation Tracking";var Ni=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const ki="MoEngage";let Mi=new st,xi=new st;const Bi={getData:(e,t)=>{zt.getWebSDKSettings().then((n=>{Mi.p.then((n=>{n.getData(e,t)}))})).catch((e=>{}))},registerCallback:(e,t)=>{zt.getWebSDKSettings().then((n=>{Mi.p.then((n=>{n.registerCallback(e,t)}))})).catch((e=>{}))}};class Wi{static callWebPush(e){const t=ki+".callWebPush";zt.getWebSDKSettings().then((n=>{var i,a,r,o,s,l,c;n.isConfigured?n.optInConfig.type===Tt.TYPE.SELF_HANDLED?(at.log(1,t,"Starting web push functions"),null!=e&&(Ne.setSoftAskConfig(e),i=Ee(e,"soft_ask_display_callback",null),a=Ee(e,"soft_ask_allow_callback",null),r=Ee(e,"soft_ask_block_callback",null),o=Ee(e,"hard_ask_allow_callback",null),s=Ee(e,"hard_ask_dismiss_callback",null),l=Ee(e,"hard_ask_block_callback",null),c=x,Xt.addCallback(c.SOFT_ASK_SHOWN,i),Xt.addCallback(c.SOFT_ASK_ALLOWED,a),Xt.addCallback(c.SOFT_ASK_DISMISSED,r),Xt.addCallback(c.HARD_ASK_ALLOWED,o),Xt.addCallback(c.HARD_ASK_DISMISSED,s),Xt.addCallback(c.HARD_ASK_DENIED,l)),ut.getInstance().then((e=>{new sn(n,e).callWebPush()}))):at.warn(1,t,"This feature can only be used when you have chosed self-handled approach in the dashboard. You can check dashboard here:",j):at.log(1,t,"Web push settings not configured on dashboard yet. To start web push subscriptions, please configure the settings on dashboard.")})).catch((e=>{at.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}static showNotification(e){zt.getWebSDKSettings().then((t=>{ut.getInstance().then((n=>{new sn(t,n).showNotification(e)}))})).catch((e=>{}))}static getSdkVersion(){return"2.30.19"}static setDebugLevel(e){return Ni(this,void 0,void 0,(function*(){const t=ki+".setDebugLevel";try{"number"==typeof e&&(!Ne.get().disableOnsite&&Wi.onsite.setLogLevel&&Wi.onsite.setLogLevel(e),zt.getWebSDKSettings().then((t=>{null!=t&&t.configs.isCardsModuleEnabled&&Wi.cards&&Wi.cards.setLogLevel(e),null!=t&&t.configs.isWebPersonalisationModuleEnabled&&window.MoeWebP&&window.MoeWebP.setLogLevel&&window.MoeWebP.setLogLevel(e),at.setLogLevel(e,!0)})).catch((n=>{at.setLogLevel(e,!0),at.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")})))}catch(e){at.error(0,t,"Error changing log level:",e)}}))}static vitals(){var e=mt.getSync();return{deviceUuid:e.deviceUuid,userDetails:e,pushToken:xe.get(r.PUSH_TOKEN),softAskStatus:xe.get(r.SOFT_ASK_STATUS),hardAskStatus:xe.get(r.HARD_ASK_STATUS)}}static help(){var e=ki+".help";at.log(0,e,"Moengage Dashboard - ",V.MOE_DASHBOARD);for(const t in V)V.hasOwnProperty(t)&&at.log(0,e,t,"-",V[t])}static track_event(e,t){return Kt.track(e,t)}static add_unique_user_id(e){return Ni(this,void 0,void 0,(function*(){var t=yield on.login(e);return Ne.get(),zt.getWebSDKSettings().then((e=>{null!=e&&e.configs.isCardsModuleEnabled&&Wi.cards&&(at.log(1,"Moengage.add_unique_user_id","Fetching new Cards after login"),Wi.cards.refreshCards())})).catch((e=>{})),t}))}static update_unique_user_id(e){return on.updateUniqueId(e)}static add_user_attribute(e,t){return on.addAttribute(e,t)}static add_first_name(e){return on.addAttribute("first_name",e)}static add_last_name(e){return on.addAttribute("last_name",e)}static add_email(e){return on.addAttribute("email",e)}static add_mobile(e){return on.addAttribute("mobile",e)}static add_user_name(e){return on.addAttribute("name",e)}static add_gender(e){return on.addAttribute("gender",e)}static add_birthday(e){return on.addAttribute("birthday",e)}static destroy_session(){return Wi.user.logout()}static call_web_push(e){Wi.callWebPush(e)}static getBranch(){return"master"}static track_page_view(){return Kt.track(l,{timestamp:Number(Date.now())}),Kt.track(c,{timestamp:Number(Date.now())})}static handle_page_change(){Ri()}}Wi.user=on,Wi.event=Kt,Wi.device=class{static getUuid(){return xe.get(r.USER_DATA).deviceUuid}static getPushToken(){return xe.get(r.PUSH_TOKEN)}static getPermissionState(e){return new Promise(((t,n)=>{zt.getWebSDKSettings().then((i=>{ut.getInstance().then((a=>{new sn(i,a).getPermissionState().then((n=>{t(n),e&&e(null,n)})).catch((t=>{n(t),e&&e(t,null)}))}))})).catch((t=>{n(t),e&&e(t,null)}))}))}},Wi.onsite=Bi,Wi.reports=Wt.reports,Wi.remoteLogs=Wt,Wi.web_p=new Li;var Ui=()=>{};const Fi={track_event:Ui,add_user_attribute:Ui,add_first_name:Ui,add_last_name:Ui,add_email:Ui,add_mobile:Ui,add_user_name:Ui,add_gender:Ui,add_birthday:Ui,destroy_session:Ui,add_unique_user_id:Ui,moe_events:Ui,location_type_attribute:Ui,call_web_push:Ui,setDebugLevel:Ui};function Hi(){var e;null!==(e=null===(e=Wi.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId||(e=Ne.get(),Wi.onsite=new Pi(e),Mi.res(Wi.onsite),Wi.onsite.initialize())}function Gi(){var e;return Ni(this,void 0,void 0,(function*(){null!==(e=null===(e=Wi.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId&&(at.log(1,"Moengage.disableOnsiteApi","logging out from inapp module"),yield Wi.onsite.logout(),Mi=new st,Wi.onsite=Bi)}))}class Ki{onWindowVisibilityChange(e){ye.set("isWindowActive",!0),document.addEventListener("focus",(()=>{t(!0)}),!1),document.addEventListener("blur",(()=>{t(!1)}),!1),window.addEventListener("focus",(()=>{t(!0)}),!1),window.addEventListener("blur",(()=>{"IFRAME"!==document.activeElement.tagName&&t(!1)}),!1);const t=e=>"boolean"==typeof e?n(e?"visible":"hidden"):document.hidden?n("hidden"):n("visible"),n=t=>{ye.set("isWindowActive","visible"===t),e(t)};window.addEventListener("visibilitychange",t,!1)}}Ki.baseLogTag="WindowEventManager";var Vi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class ji{static initialize(){return Vi(this,void 0,void 0,(function*(){var e;return null==ji.ready&&(ji.campaignStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:se,storeName:le.STORE_NAME}),ji.metaStore=Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:se,storeName:ce.STORE_NAME}),e=[ji.campaignStore.ready(),ji.metaStore.ready()],ji.ready=Promise.all(e)),ji.ready}))}static clear(){return Vi(this,void 0,void 0,(function*(){var e=ji.baseLogTag+".clear";try{yield ji.initialize(),yield Promise.all([ji.campaignStore.clear(),ji.metaStore.clear()]);var t=[ji.campaignStore.ready(),ji.metaStore.ready()];ji.ready=Promise.all(t)}catch(t){at.error(1,e,"Error clearing cards stores:",t)}return ji.ready}))}}let Yi;function zi(e){const t="Pre-Initialization";if(!(e=>{const t=["bot","spider","crawler","crawling","Applebot","PetalBot","pingbot","proximic","AdsBot-Google","Googlebot","Cincraw","SnapchatBot","Snapchat-Proxy/1.0","SnapchatAds","Snapchat-Ads/1.0","YandexRenderResourcesBot","bingbot","slurp","MicrosoftPreview","Baiduspider","HeadlessChrome",...Array.isArray(e)?e:[]];return new RegExp(t.join("|"),"i").test(navigator.userAgent)})(null==e?void 0:e.bots_list)){var n=ze();return n&&0{Ft.broadcastToWindow({topic:k,name:M.MOE_INIT,data:Ne.get()}),Ve()===fe.WEB&&qi(),at.setLogLevel(Ne.get().debugLevel),at.log(1,t,"Script loaded!"),at.customLabel(1,t,"SDK Version","2.30.19"),0{Ft.broadcastToWindow({topic:k,name:M.MOE_INIT_COMPLETED})}))})),e=window.moengage_object||"Moengage",window[e]=Wi,Wi):(at.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",V.WEBSDK_DOCS),Fi))}at.error(1,t,"Bot detected, Can't initialise the MoEngage Web SDK")}ji.baseLogTag="MOE_CARDS_STORES";const qi=()=>{Se.createInstance({driver:[Se.INDEXEDDB,Se.WEBSQL,Se.LOCALSTORAGE],name:q,storeName:$}).clear()},$i=()=>new Promise((e=>{"complete"!==window.document.readyState?window.addEventListener("load",(()=>{e(!0)})):e(!0)}));window&&(window.moe=zi,window.moeBannerText="banner",window[Q]=Gt);const Ji=()=>{try{var e=localStorage.getItem("moe_segment_cluster"),t=localStorage.getItem("moe_segment_sw_path"),n=localStorage.getItem("moe_segment_sw_scope");const i={};return e&&(i.cluster=e),t&&(i.swPath=t),n&&(i.swScope=n),!!(e||t||n)&&(at.log(1,".isSegmentDataFound","Data found for segment initialisation",i),i)}catch(e){return!1}},Xi=()=>{const e="Initialization";return new Promise((t=>zt.getWebSDKSettings().then((n=>(nt.setRemoteLogging(n),n.isDomainLevelStorage&&(xe.isSharedWithCookie=!0,xe.copyKeysFromCookie()),(n.configs.isBatchingEnabled||n.configs.remoteLogTracking)&&(Wt.init(n),at.log(1,e,"Enabled Batching for "+(n.configs.isBatchingEnabled?"Event Tracking":"")+(n.configs.remoteLogTracking?", Remote Logs Tracking":""))),mt.get().then((i=>{if(nn.get().deviceToLogout===i.deviceUuid)return at.remoteLogTracking(1,"info",e,"User was not able to logout last time. Completing the logout now and starting new session."),Wi.user.logout();i.deviceAdded&&zt.onDeviceAdd.res(),n.isPushSubBilling&&at.warn(1,e,"You are under push subscriber based billing plan. We are only tracking users with an email, phone number or have subscribed to web push. All user attributes and events will be stored in a queue till we receive either of the properties.");var a=new dt;(new Ki).onWindowVisibilityChange(a.handleBrowserInactivity),at.customLabel(1,e,"Device UUID",i.deviceUuid),at.customLabel(1,e,"Device Added",i.deviceAdded),Ft.broadcastToWindow({topic:k,name:M.SETTINGS_FETCHED,data:n}),Ft.broadcastToWindow({topic:k,name:M.DEVICE_UUID,data:i.deviceUuid}),n.isPushSubBilling||i.deviceAdded||zt.deviceAdd(),Wi.track_page_view(),Jt.clear(r.Q.DEVICE),Jt.clear(r.Q.REPORT),Ne.get().enableSPA&&!Yi&&Zi(),ut.getInstance().then((t=>{var i;const a=!Ne.get().disableWebPush&&new sn(n,t);var o,s=!(null!==(s=window.MoeWebP)&&void 0!==s&&s.isEditorModeEnabled());a&&a.isWebPushEnabled()&&s?0<=[Tt.TYPE.ONE_CLICK,Tt.TYPE.TWO_STEP].indexOf(n.optInConfig.type)?a.callWebPush():(at.log(1,e,"Self handled setting. Will show opt-in on manual invocation, if required."),a.getPermissionState().then((t=>{var n=xe.get(r.PUSH_TOKEN);(t===Vt.GRANTED||null!=n&&t===Vt.DENIED)&&(t===Vt.GRANTED&&at.log(1,e,"Notification permission already granted. Proceeding to subscribe the user"),a.callWebPush())})).catch((t=>{at.warn(1,e,"Cannot get permission state: ",t)}))):sn.SUPPORTED_BROWSERS.indexOf(t.name)<0?at.warn(1,e,"Web push not supported on this browser. Supported browsers are:\n\t\t1. Google Chrome\n\t\t2. Mozilla Firefox\n\t\t3. Opera\n\t\t4. Edge\n\t\t5. Safari 16 and above + macOS 13 and above"):at.warn(1,e,"Web push feature not enabled for current environment"),!Ne.get().disableOnsite&&s?zt.onDeviceAdd.p.then((()=>{Hi()})):at.warn(1,e,"Onsite is disabled in this page since `disableOnsite: true` is passed during initialization."),null!=n&&n.configs.isCardsModuleEnabled&&null!==(i=Ne.get().cards)&&void 0!==i&&i.enable&&s?(o=n,ln.loadModule(ee.CARDS).then((e=>{xi.res(e),e.initialize(o),Wi.cards=e})).catch((e=>{xi.rej(e)}))):ji.clear(),Qi()})),t(!0)}))))).catch((n=>{at.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),t(!1)}))))},Qi=()=>{const e="Moengage.clearWindowQ";$i().then((()=>{try{var t=window.moengage_object||"Moengage";if(window[t]&&window.moengage_q){let i=window.moengage_q;if(window.moengage_q=[],i&&0{const e="startSpaUrlHandler";let t=document.location.href;(()=>{Yi=!0,at.log(1,e,"Start listening to URL changes");const n=document.querySelector("body"),i=new MutationObserver((n=>{n.forEach((n=>{t===document.location.href||document.location.href.includes("moe-card=1")||(t=document.location.href,at.log(1,e,"URL Change detected",t),Ri())}))}));i.observe(n,{childList:!0,subtree:!0})})()},ea={clearWindowQ:Qi,startSpaUrlHandler:Zi,isSegmentDataFound:Ji,clearEventsFromIDB:qi,moeInit:zi,windowLoaded:$i}})()})(); \ No newline at end of file +(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,i){function a(o,s){if(!n[o]){if(!t[o]){if(r)return r(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}l=n[o]={exports:{}},t[o][0].call(l.exports,(function(e){return a(t[o][1][e]||e)}),l,l.exports,e,t,n,i)}return n[o].exports}for(var r=void 0,o=0;oe.db.version;return i&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),(a||n)&&(!n||(n=e.db.version+1)>e.version&&(e.version=n),1)}function A(e){return r([function(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),a=0;a>4,l[s++]=(15&n)<<4|i>>2,l[s++]=(3&i)<<6|63&a;return r}function F(e){for(var t=new Uint8Array(e),n="",i=0;i>2],n+=P[(3&t[i])<<4|t[i+1]>>4],n+=P[(15&t[i+1])<<2|t[i+2]>>6],n+=P[63&t[i+2]];return t.length%3==2?n=n.substring(0,n.length-1)+"=":t.length%3==1&&(n=n.substring(0,n.length-2)+"=="),n}var W={serialize:function(e,t){var n="";if(e&&(n=B.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===B.call(e.buffer))){var i,a=N;e instanceof ArrayBuffer?(i=e,a+=M):(i=e.buffer,"[object Int8Array]"===n?a+="si08":"[object Uint8Array]"===n?a+="ui08":"[object Uint8ClampedArray]"===n?a+="uic8":"[object Int16Array]"===n?a+="si16":"[object Uint16Array]"===n?a+="ur16":"[object Int32Array]"===n?a+="si32":"[object Uint32Array]"===n?a+="ui32":"[object Float32Array]"===n?a+="fl32":"[object Float64Array]"===n?a+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(a+F(i))}else if("[object Blob]"===n)(n=new FileReader).onload=function(){var n="~~local_forage_type~"+e.type+"~"+F(this.result);t(N+k+n)},n.readAsArrayBuffer(e);else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,L)!==N)return JSON.parse(e);var t,n=e.substring(x),i=e.substring(L,x);i===k&&R.test(n)&&(t=(e=n.match(R))[1],n=n.substring(e[0].length));var a=U(n);switch(i){case M:return a;case k:return r([a],{type:t});case"si08":return new Int8Array(a);case"ui08":return new Uint8Array(a);case"uic8":return new Uint8ClampedArray(a);case"si16":return new Int16Array(a);case"ur16":return new Uint16Array(a);case"si32":return new Int32Array(a);case"ui32":return new Uint32Array(a);case"fl32":return new Float32Array(a);case"fl64":return new Float64Array(a);default:throw new Error("Unkown type: "+i)}},stringToBuffer:U,bufferToString:F};function H(e,t,n,i){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,i)}function K(e,t,n,i,a,r){e.executeSql(n,i,a,(function(e,o){o.code===o.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?r(e,o):H(e,t,(function(){e.executeSql(n,i,a,r)}),r)}),r):r(e,o)}),r)}function G(e,t,n,i){var a=this;e=c(e);var r=new o((function(r,o){a.ready().then((function(){var s=t=void 0===t?null:t,l=a._dbInfo;l.serializer.serialize(t,(function(t,c){c?o(c):l.db.transaction((function(n){K(n,l,"INSERT OR REPLACE INTO "+l.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){r(s)}),(function(e,t){o(t)}))}),(function(t){t.code===t.QUOTA_ERR&&(0 '__WebKitDatabaseInfoTable__'",[],(function(t,n){for(var i=[],r=0;r{let i;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:n.g):e=>(i=i||Promise.resolve()).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},967:(e,t,n)=>{e.exports=function(e,t,n){if("number"!=typeof t)throw new Error("second argument must be a Number");let a,r,o,s,l,c,d=!0;function g(e){function t(){n&&n(e,a),n=null}d?i(t):t()}function u(t,n,i){if(a[t]=i,n&&(l=!0),0==--o||n)g(n);else if(!l&&c{var i=n(570),a=n(171);(n=a).v1=i,n.v4=a,e.exports=n},327:e=>{for(var t=[],n=0;n<256;++n)t[n]=(n+256).toString(16).substr(1);e.exports=function(e,n){var i=n||0;return[(n=t)[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[+i]]].join("")}},217:e=>{var t,n,i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);i?(t=new Uint8Array(16),e.exports=function(){return i(t),t}):(n=new Array(16),e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n})},570:(e,t,n)=>{var i,a,r=n(217),o=n(327),s=0,l=0;e.exports=function(e,t,n){var c=t&&n||0,d=t||[],g=(e=e||{}).node||i,u=void 0!==e.clockseq?e.clockseq:a;null!=g&&null!=u||(h=r(),null==g&&(g=i=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==u&&(u=a=16383&(h[6]<<8|h[7])));var p=void 0!==e.msecs?e.msecs:(new Date).getTime(),h=(n=void 0!==e.nsecs?e.nsecs:l+1,p-s+(n-l)/1e4);if(h<0&&void 0===e.clockseq&&(u=u+1&16383),1e4<=(n=(h<0||s>>24&255,d[c++]=n>>>16&255,d[c++]=n>>>8&255,d[c++]=255&n,p=p/4294967296*1e4&268435455,d[c++]=p>>>8&255,d[c++]=255&p,d[c++]=p>>>24&15|16,d[c++]=p>>>16&255,d[c++]=u>>>8|128,d[c++]=255&u;for(var m=0;m<6;++m)d[c+m]=g[m];return t||o(d)}},171:(e,t,n)=>{var i=n(217),a=n(327);e.exports=function(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var s=0;s<16;++s)t[r+s]=o[s];return t||a(o)}}},t={};function n(i){var a=t[i];return void 0!==a||(a=t[i]={exports:{}},e[i](a,a.exports,n)),a.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{exportForTesting:()=>da,initializeLaunchSequence:()=>sa});const e="initData",t="browserDetails",a="unifiedLogs",r={USER_DATA:"USER_DATA",PUSH_TOKEN:"PUSH_TOKEN",SUBSCRIPTION_DETAILS:"SUBSCRIPTION_DETAILS",SETUP_TIME:"SETUP_TIME",OPT_IN_SHOWN_TIME:"OPT_IN_SHOWN_TIME",OPTED_STATUS_TRACK_TIME:"OPTED_STATUS_TRACK_TIME",SOFT_ASK_STATUS:"SOFT_ASK_STATUS",HARD_ASK_STATUS:"HARD_ASK_STATUS",WEB_SETTINGS:"WEB_SETTINGS",GRACEFUL_DATA:"GRACEFUL_DATA",Q:{PREFIX:"Q",REPORT:"REPORT",DEVICE:"DEVICE"},INIT_DATA:"INIT_DATA",OLD_SDK:{USER_DATA:"moengage_data",SUBSCRIPTION_DETAILS:"MOE_PUSH_ENDPOINT",PUSH_TOKEN:"MOE_PUSH_TOKEN"},BROWSER_DETAILS:"browserDetails",SESSION:"SESSION"},o=2,s="MOE_WEB_UNSUBSCRIBED",l="EVENT_ACTION_WEB_SESSION_START",c="MOE_PAGE_VIEWED",d="MOE_WEB_OPTIN_BANNER_LOAD",g="MOE_WEB_OPTIN_CLOSED",u="MOE_WEB_OPTIN_ACCEPTED",p="MOE_OPT_IN_SHOWN",h="MOE_OPT_IN_ALLOWED",m="MOE_OPT_IN_DISMISSED",f="MOE_OPT_IN_BLOCKED",v="MOE_OPT_IN_ATTEMPT",S="MOE_LOGOUT",E="EVENT_ACTION_DEVICE_ATTRIBUTE",y="MOE_PUSH_PERMISSION_STATE_ALLOWED",b="MOE_PUSH_PERMISSION_STATE_BLOCKED",_="MOE_PAGE_EXIT",T="MOE_PAGE_SCROLL",I="MOE_PAGE_URL_EVENT",A="USER_ATTRIBUTE_UNIQUE_ID",w="USER_ATTRIBUTE_USER_EMAIL",D="USER_ATTRIBUTE_USER_NAME",O="USER_ATTRIBUTE_USER_FIRST_NAME",C="USER_ATTRIBUTE_USER_LAST_NAME",P="USER_ATTRIBUTE_USER_MOBILE",R="USER_ATTRIBUTE_USER_GENDER",N="USER_ATTRIBUTE_USER_BDAY",L="USER_ID_MODIFIED_FROM",M=["id","first_name","last_name","email","mobile","name","gender","birthday"],k=[A,L,w,P],x="MOE_LIFECYCLE",B={MOE_INIT:"SDK_INITIALIZED",SETTINGS_FETCHED:"SETTINGS_FETCHED",EVENT_TRACKED:"EVENT_TRACKED",DEVICE_UUID:"DEVICE_UUID",MOE_INIT_COMPLETED:"SDK_INITIALIZATION_COMPLETED",CARDS_INIT:"CARDS_INITIALIZED"},U={HARD_ASK_SHOWN:"HARD_ASK_SHOWN",HARD_ASK_DISMISSED:"HARD_ASK_DISMISSED",HARD_ASK_ATTEMPTED:"HARD_ASK_ATTEMPTED",HARD_ASK_ALLOWED:"HARD_ASK_ALLOWED",HARD_ASK_DENIED:"HARD_ASK_DENIED",SOFT_ASK_SHOWN:"SOFT_ASK_SHOWN",SOFT_ASK_DISMISSED:"SOFT_ASK_DISMISSED",SOFT_ASK_ALLOWED:"SOFT_ASK_ALLOWED"},F={code:1e3,reason:"Web push not supported in current browser environment"},W={code:1001,reason:"Registering the service worker failed"},H={code:1002,reason:"Web push settings not configured"},K={code:1004,reason:"Hard ask was dismissed to many times"},G={code:1005,reason:"Service worker can not be registered on this page due to scope issues"},V="https://media.giphy.com/media/KDRv3QggAjyo/giphy.gif",j={DC_1:"sdk-01.moengage.com",DC_2:"sdk-02.moengage.com",DC_3:"sdk-03.moengage.com",DC_4:"sdk-04.moengage.com",DC_5:"sdk-05.moengage.com",DC_6:"sdk-06.moengage.com",DC_100:"sdk-100.moengage.com",eu:"sdk-02.moengage.com",in:"sdk-03.moengage.com"},Y={MOE_DASHBOARD:"https://app.moengage.com",MIGRATION_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",WEBSDK_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",SELF_HANDLED_DOCS:"https://docs.moengage.com/docs/self-handled-opt-ins"},z="Dashboard --\x3e Settings --\x3e Channel --\x3e Push",q="SESSION",$="v3/sdkconfig/",J="moe_tracking",X="events",Q="batched_events",Z="moe_uuid",ee="MoengagePageEventHistoryManager",te={HOST_1:"https://sdk-01.moengage.com/",HOST_2:"https://sdk-02.moengage.com/",HOST_3:"https://sdk-03.moengage.com/",HOST_4:"https://sdk-04.moengage.com/",HOST_5:"https://sdk-05.moengage.com/",HOST_6:"https://sdk-06.moengage.com/",HOST_100:"https://sdk-100.moengage.com/",API:{META:"v3/campaigns/inapp/live",CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/live/",DRAFT_CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/test/",STATS:"v3/campaigns/inapp/live/stats",CAMPAIGNS_PAYLOAD:"v3/campaigns/inapp/live/campaigns"},DRAFT_CAMPAIGN_TPYES:{WEB_PERSONALIZATON:"web_personalization",ONSITE_MESSAGING:"onsite_messaging"},META_REFRESH_TIME:9e5,DATABASE_NAME:"moe_onsite",OSM_MODULE:"moeOnsite",DELIVERY_FUNNEL:{ATTEMPTED:{CAMPAIGN_ATTEMPTED:"ATM"},PRIORITIZED:{CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE:"PRT_HIGH_PRT_CMP_AVL",CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN:"PRT_MAX_TIM_SWN",CAMPAIGN_PRIORITY_MIN_DELAY:"PRT_MIN_DEL",CAMPAIGN_PRIORITY_GLOBAL_DELAY:"PRT_GBL_DEL",CAMPAIGN_PRIORITY_EXPIRED:"PRT_EXP"},DELIVERED:{CAMPAIGN_DELIVERED_API_FAILURE:"DLV_API_FLR",CAMPAIGN_DELIVERED_PERSONALIZATION_FAILURE:"DLV_PERSN_FLR",CAMPAIGN_DELIVERED_PAUSED:"DLV_PAU",CAMPAIGN_DELIVERED_EXPIRED:"DLV_EXP",CAMPAIGN_DELIVERED_MANDATORY_PARAMS_MISSING:"DLV_MAND_PARM_MIS"},IMPRESSION:{CAMPAIGN_IMPRESSION_CONTEXT_CHANGED:"IMP_CTX_CHG",CAMPAIGN_IMPRESSION_GLOBAL_DELAY:"IMP_GBL_DEL",CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN:"IMP_MAX_TIM_SHW",CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE:"IMP_ANTR_CMP_VISB",CAMPAIGN_IMPRESSION_CANCEL_BEFORE_DELAY:"IMP_CNCL_BFR_DEL"},EVALUATION:{CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED:"EVL_PATH_TIME_EXP",CAMPAIGN_EVALUATION_USER_NOT_ON_APP:"EVL_USER_NOT_ON_APP"}},STORES:{CAMPAIGNS_META:{NAME:"campaigns_meta"},CAMPAIGNS_TAGS:{NAME:"campaigns_tags"},CAMPAIGNS_STATS:{NAME:"campaigns_stats"},TEST_CAMPAIGN_STORE:{NAME:"test_campaign"},EXIT_INTENT_CAMPAIGN_STORE:{NAME:"exit_intent"},SERVICE_META:{NAME:"service_meta",KEYS:{LAST_META_CALL_TIME:"last_meta_call_time",GLOBAL_DELAY:"global_delay_between_inapps",LAST_INAPP_SHOWN_TIME:"last_inapp_shown",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",UNIQUE_ID:"unique_id"}},PENDING_SECONDARY_EVENTS:{NAME:"pending_secondary_events"},PENDING_TIMER_CAMPAIGNS:{NAME:"pending_timer_campaigns"},TRIGGERING_PRIMARY_EVENTS:{NAME:"triggering_primary_events"}},EVENT_NAMES:{OSM:{CLICK:"MOE_ONSITE_MESSAGE_CLICKED",IMPRESSION:"MOE_ONSITE_MESSAGE_SHOWN",DISMISS:"MOE_ONSITE_MESSAGE_DISMISSED",AUTO_DISMIS:"MOE_ONSITE_MESSAGE_AUTO_DISMISS",TYPE:"onsite"},WP:{CLICK:"MOE_WEBP_MESSAGE_CLICKED",IMPRESSION:"MOE_WEBP_MESSAGE_SHOWN",DISMISS:"MOE_WEBP_MESSAGE_DISMISSED",DELIVERED:"MOE_WEBP_MESSAGE_DELIVERED",TYPE:"webp"}},WEB_HELPER_IFRAME_URL:"https://cdn.moengage.com/webpush/beta/webpushhelper.html",IFRAME_CHANNEL:"inapp_helper",IFRAME_TOPICS:{COOKIE_STORAGE:"COOKIE_STORAGE"},COOKIE_STORAGE:{TEST_DRAFT_TYPE:"moe_inapp_draft_type",TEST_DRAFT_ID:"moe_inapp_draft_id",TEST_DRAFT_TAG:"moe_inapp_draft_tag",TEST_CAMPAIGN_META:"test_campaign_meta",TEST_TEMPLATE_TYPE:"test_template_type",TEST_VARIATION:"moe_inapp_draft_variation",TEST_LOCALE:"moe_inapp_draft_locale"},CSS_SELECTORS:{CLICK_INAPP:"moe-inapp-click",DISMISS_INAPP:"moe-inapp-close"},EXIT_INTENT:{CONFIG:{SCROLL_DOWN_THRESHOLD:50,SCROLL_UP_THRESHOLD:5,SCROLL_INTERVAL:1e3}},POSITIONED_TEMPLATE:'data-editor-type="MOE_EDITOR"',SIDE_BANNER:'data-template-type="SIDE_BANNER"',PUSH_BANNER:"moe-osm-pusher",GCG_ERROR_CODE:"E001",SCROLL_CAMPAIGN_THROTTLING_TIME:1500},ne={CARDS:{name:"CARDS",src:"https://cdn.moengage.com/webpush/beta/sdk.cards.js",windowLocation:"moeCards"}},ie="moe_database",ae={NAME:"offline_data"},re="v2/sdk/report/",oe=15e3,se="number",le={TOPIC:"MOE_AUTOMATED_EVENTS",NAMES:[s,l,c,d,g,u,"MOE_USER_SUBSCRIBED",v,p,h,m,f,y,b,S,te.EVENT_NAMES.OSM.CLICK,te.EVENT_NAMES.OSM.IMPRESSION,te.EVENT_NAMES.OSM.DISMISS,te.EVENT_NAMES.OSM.AUTO_DISMIS]},ce=[v],de="moe_cards",ge={STORE_NAME:"campaigns"},ue={STORE_NAME:"meta",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",LAST_META_CALL_TIME:"last_meta_call_time",UNIQUE_ID:"unique_id",LAST_SYNC_CARDS:"last_sync_cards",SYNC_INTERVALS:"sync_intervals",SHOW_ALL_TAB:"show_all_tab"},pe="appOpen",he="IOS_PERMISSION_DENIED",me="moe_push_opted",fe="v1/sdk_logging/",ve="v2/device/add",Se="v2/device/token-check",Ee="v2/report/add",ye={TV:"tv",TABLET:"tablet",MOBILE:"mobile",WEB:"web"};var be,_e=n(483);function Te(e,t,n){return null!=e&&t?(e=e[(t=Array.isArray(t)?t:t.split("."))[0]])&&1{})),this.zIndex=Te(e,"zIndex","999999"),this.fontFaces=(null===(e=e.fontFaces)||void 0===e?void 0:e.map((e=>new Le(e))))||[]}}we.baseLogTag="CardsConfigModel";class De{constructor(e){this.backgroundColor=Te(e,"backgroundColor","#00237C"),this.text=Te(e,"text","Notification"),this.color=Te(e,"color","#fff"),this.fontSize=Te(e,"fontSize","16px"),this.fontFamily=Te(e,"fontFamily","inherit")}}class Oe{constructor(e={}){this.img=Te(e,"img","https://app-cdn.moengage.com/sdk/cards-error.svg"),this.text=Te(e,"text",'Error something went wrong ')}}class Ce{constructor(e){this.headerFontSize=Te(e,"headerFontSize","16px"),this.descriptionFontSize=Te(e,"descriptionFontSize","14px"),this.ctaFontSize=Te(e,"ctaFontSize","12px"),this.fontFamily=Te(e,"fontFamily","inherit"),this.horizontalRowColor=Te(e,"horizontalRowColor","#D9DFED")}}class Pe{constructor(e){this.mWebIcon=Te(e,"mWebIcon","https://app-cdn.moengage.com/sdk/back-icon.svg"),this.webIcon=Te(e,"webIcon","https://app-cdn.moengage.com/sdk/cross-icon.svg"),this.callBack=Te(e,"callBack",(()=>{}))}}class Re{constructor(e){this.inactiveTabFontColor=Te(e,"inactiveTabFontColor","#7C7C7C"),this.fontSize=Te(e,"fontSize","14px"),this.fontFamily=Te(e,"fontFamily","inherit"),this.backgroundColor=Te(e,"backgroundColor","#F6FBFC"),this.active=new Me(Te(e,"active",{}))}}class Ne{constructor(e){this.color=Te(e,"color","red"),this.enable=Te(e,"enable",!1)}}class Le{constructor(e){this.family=Te(e,"family",""),this.url=Te(e,"url","")}}class Me{constructor(e){this.color=Te(e,"color","#06A6B7"),this.underlineColor=Te(e,"underlineColor","#06A6B7"),this.backgroundColor=Te(e,"backgroundColor","transparent")}}class ke{constructor(e){this.enable=Te(e,"enable",!1),this.icon=Te(e,"icon","https://app-cdn.moengage.com/sdk/bell-icon.svg"),this.postion=Te(e,"postion","0px 10px 40px 0"),this.countBackgroundColor=Te(e,"countBackgroundColor","#FF5A5F"),this.countColor=Te(e,"countColor","#fff"),this.zIndex=Te(e,"zIndex","999998"),this.iconBackgroundColor=Te(e,"iconBackgroundColor","#D9DFED"),this.fontFamily=Te(e,"fontFamily","inherit")}}class xe{constructor(e){this.img=Te(e,"img","https://app-cdn.moengage.com/sdk/cards-no-result.svg"),this.text=Te(e,"text","No notifications to show, check again later.")}}class Be{constructor(e){this.debugLevel=0,this.cluster=null,this.environment=null,this.baseDomainName="https://sdk-01.moengage.com/",this.inapp=null,this.customSoftAsk=null;var t=Be.baseLogTag+".constructor";null!=Te(e,"app_id",null)?(this.appId=Te(e,"app_id",null),this.integrationType=be.OLD_SDK):null!=Te(e,"appId",null)?(this.appId=Te(e,"appId",null),this.integrationType=be.NEW_SDK):(ut.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",Y.WEBSDK_DOCS),this.integrationType=null),null!=Te(e,"debug_logs",null)?this.debugLevel=Te(e,"debug_logs",0):null!=Te(e,"debugLevel",null)?this.debugLevel=Te(e,"debugLevel",0):(ut.log(2,t,"No log level config found. Using default value of",0),this.debugLevel=0),this.appId&&(this.baseDomainName="https://sdk-01.moengage.com/",this.forceSwUpdate=Te(e,"forceSwUpdate",!1),this.cluster=Te(e,"cluster",this.cluster),this.cluster&&null!=j[this.cluster]&&(this.environment=j[this.cluster]),Te(e,"environment",null)&&(this.environment=e.environment),this.environment&&(this.baseDomainName="https://"+this.environment+"/"),0!!k.includes(e.key)))),e===r.SUBSCRIPTION_DETAILS&&(i.domain=t.domain,i.token=t.token,i.endpoint=t.endpoint,i.keys=t.keys),Ue.set(e,i)}}static get(e){return We.baseLogTag,e=We.prefix+e,localStorage?Te(We.getMoeData(),e,null):null}static remove(e){var t=We.baseLogTag+".remove",n=We.prefix+e;if(localStorage&&null!=We.get(e)){const i=We.getMoeData();delete i[n],localStorage.setItem(Fe,JSON.stringify(i)),ut.log(2,t,"Key",e,"removed.")}We.isSharedWithCookie&&0<=We.KEYS_SHARED_WITH_COOKIE.indexOf(e)&&Ue.remove(e)}static logout(){const e=["INIT_DATA","Q","WEB_SETTINGS","SUBSCRIPTION_DETAILS","PUSH_TOKEN","GRACEFUL_DATA"];for(const t in r)e.indexOf(t)<0&&We.remove(r[t]);for(const e in r.Q)Ae.purge(e)}static getString(e){if(e=We.prefix+e,localStorage)return"string"==typeof(e=We.get(e))||e instanceof String?e:JSON.stringify(e)}static removePrefix(){We.prefix=""}static copyKeysFromCookie(){for(let n=0;n{var n=e.findIndex((e=>e.key===t.key));0<=n?e[n]=t:e.push(t)})),e=e.filter((e=>!(k.includes(e.key)&&n.attributes.findIndex((t=>t.key===e.key))<0))),n.attributes=e}We.set(e,n)}}We.removeStaleKeysFromLS()}static removeStaleKeysFromLS(){var e=We.baseLogTag+".removeStaleKeysFromLS";try{Object.keys(We.getMoeData()).forEach((e=>{this.KEYS_SHARED_WITH_COOKIE.includes(e)&&!Ue.get(e)&&We.remove(e)}))}catch(t){ut.error(1,e,t)}}static getMoeData(){var e=We.baseLogTag+".getMoeData",t=localStorage.getItem(Fe);if(null==t)return{};try{return JSON.parse(t)}catch(t){return ut.error(1,e,t),{}}}}function He(e){return 0===Object.keys(e).length&&e.constructor===Object}function Ke(e){e=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e>18,s=(258048&d)>>12,l=(4032&d)>>6,c=63&d,t+=n[o]+n[s]+n[l]+n[c];return 1==e?(d=i[r],o=(252&d)>>2,s=(3&d)<<4,t+=n[o]+n[s]+"=="):2==e&&(d=i[r]<<8|i[1+r],o=(64512&d)>>10,s=(1008&d)>>4,l=(15&d)<<2,t+=n[o]+n[s]+n[l]+"="),t}function Ve(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?"vapid"===e.chrome.subscriptionMode&&e.chrome.vapidPublicKey:t.isFirefox()&&"vapid"===e.firefox.subscriptionMode&&e.firefox.vapidPublicKey}function je(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?e.chrome.vapidPublicKey:t.isFirefox()?e.firefox.vapidPublicKey:""}function Ye(){const e=Be.get().swPath;return!(!e||!e.includes("tools/moengage"))}function ze(e){return e.replace(/[\uff0e]/g,".")}function qe(){const e=navigator.userAgent;return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))}function $e(){var e=navigator.userAgent.toLowerCase(),t=/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(e);return/nexus player|neo-x5|adt-2|tsbnettv|roku|tizen|smart-tv.+(samsung)|hbbtv.+maple;(\d+)|(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))|(apple) ?tv|crkey|droid.+aft(\w)( bui|\))|\(dtv[\);].+(aquos)|(aquos-tv[\w ]+)\)|(bravia[\w ]+)( bui|\))|(mitv-\w{5}) bui|Hbbtv.*(technisat) (.*);|\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)|hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)|\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i.test(e)?ye.TV:t?ye.TABLET:qe()?ye.MOBILE:ye.WEB}function Je(e,t){const n=t&&new RegExp("^("+t.join("|")+")$");return $e()===ye.TV&&(null!=n&&n.test(e)||!t)?{moe_os_type:function(){var e=navigator.userAgent.toLowerCase();return/tizen/i.test(e)?"Tizen":/web0s/i.test(e)?"WebOS":/xbox/i.test(e)?"Xbox":/vizio/i.test(e)?"viziotv":"SmartTV"}(),os:ye.TV.toUpperCase()}:{}}function Xe(e){return new Date(Date.parse(e))}function Qe(){return window[window.moengage_object||"Moengage"]}We.baseLogTag="PersistentStorage",We.prefix="",We.isSharedWithCookie=!1,We.KEYS_SHARED_WITH_COOKIE=[r.USER_DATA,r.SUBSCRIPTION_DETAILS,r.SOFT_ASK_STATUS,r.PUSH_TOKEN,r.OPT_IN_SHOWN_TIME,r.HARD_ASK_STATUS,r.SESSION];const Ze=e=>"string"==typeof e,et=e=>"[object Date]"===Object.prototype.toString.call(e);function tt(e){return"object"==typeof e&&!et(e)}function nt(e,t){if(null==e||null==t)return e===t;if(e instanceof Function)return e===t;if(e instanceof RegExp)return e===t;if(e===t||e.valueOf()===t.valueOf())return!0;if(Array.isArray(e)&&e.length!==t.length)return!1;if(e instanceof Date)return!1;if(!(e instanceof Object))return!1;if(!(t instanceof Object))return!1;const n=Object.keys(e);return Object.keys(t).every((e=>-1!==n.indexOf(e)))&&n.every((n=>nt(e[n],t[n])))}function it(){const e=new Date;return`${e.getDate()}:${e.getMonth()+1}:${e.getFullYear()}:${e.getHours()}:${e.getMinutes()}:`+e.getSeconds()}const at=e=>{if(e){const t=e.replace("?","").split("&"),n={};return t.forEach((e=>{e=(t=e.split("="))[0];var t=decodeURIComponent(t[1]||"");n[e]?"[object Array]"===Object.prototype.toString.call(n[e])?n[e].push(t):n[e]=[n[e],t]:n[e]=t})),JSON.parse(JSON.stringify(n))}return{}},rt=e=>{var t,n,i=We.get(r.WEB_SETTINGS);null!=i&&i.configs.isWebPersonalisationModuleEnabled&&null!==(t=window.MoeWebP)&&void 0!==t&&t.clearLastFetchedTime(!0),e&&null!==(n=window.MoeWebP)&&void 0!==n&&n.getLiveExperiences()},ot=(e,t)=>{if(!t)return e;"?"!==e[e.length-1]&&(e+="?");for(const n in t)t.hasOwnProperty(n)&&null!=t[n]&&(e+=n+"="+encodeURIComponent(t[n])+"&");return"&"===e[e.length-1]?e.slice(0,-1):e},st=e=>{let t;try{t=JSON.stringify(e)}catch(e){return!1}return new Blob([t]).size/1024>195},lt=e=>e===s||e===b;function ct(e){return`Event "${e}" can't get tracked as its size is more than 195 KB. Max permissible event size is 195 KB.`}class dt{static logData(e,t){return{log_type:e,sent_time:(new Date).toISOString(),lake_fields:t}}static setRemoteLogging(e){return this.isTrackingEnabled||(this.logLevel=null==e?void 0:e.configs.logLevel,this.isTrackingEnabled=e.configs.remoteLogTracking,this.isTrackingEnabled)}static log(e,t,n,i,...a){!this.isTrackingEnabled||e!==this.logLevel&&"verbose"!==this.logLevel||Qe().remoteLogs.addRemoteLogs(this.logData(e,{msg:n+[...a].toString(),file_name:t,trace:i}))}}let gt="color: white; background: #41AE55; border-radius: 5px;";class ut{static setLogLevel(e,t){var n=ut.baseLogTag+".setLogLevel";null==Ie.get(a)&&Ie.set(a,[]),null==e?ut.logLevel=0:e in[0,1,2]?0<(ut.logLevel=e)&&t&&ut.releaseAllLogs():ut.warn(0,n,"Value",e,"not supported for setDebugLevel(). Current log level is",ut.logLevel,". Debug level can only be [0, 1, 2]")}static setLogTabStyle(e){ut.tagLogStyle=ut.tagLogStyle.replace("#48beab",e)}static log(e,t,n,...i){e<=ut.logLevel?console.log("%c "+ut.logBrand+" %c %c info %c %c "+t+" ",gt,"","color: white; background: #18a0bf; border-radius: 5px;","",ut.tagLogStyle,n,...i):ut.cacheLog((()=>{ut.log(e,t,n,...i)}))}static remoteLogTracking(e,t,n,i,...a){dt.log(t,n,i,...a),this.log(e,n,i,...a)}static error(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||dt.log("error",t,n,...i),e<=ut.logLevel?console.error("%c "+ut.logBrand+" %c %c error %c %c "+t+" ",gt,"","color: white; background: #cc0a0a; border-radius: 5px;","",ut.tagLogStyle,n,...i.slice(0,-1)):ut.cacheLog((()=>{ut.error(e,t,n,...i,{isCached:!0})}))}static warn(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||dt.log("warning",t,n,...i),e<=ut.logLevel?console.warn("%c "+ut.logBrand+" %c %c warn %c %c "+t+" ",gt,"","color: white; background: #e8ab51; border-radius: 5px;","",ut.tagLogStyle,n,...i.slice(0,-1)):ut.cacheLog((()=>{ut.warn(e,t,n,...i,{isCached:!0})}))}static customLabel(e,t,n,...i){e<=ut.logLevel?console.log("%c "+ut.logBrand+" %c %c "+t+" %c %c "+n+" %c ",gt,"",ut.tagLogStyle,"","color: white; background: #a400ff; border-radius: 5px;","",...i):ut.cacheLog((()=>{ut.customLabel(e,t,n,...i)}))}static image(e,t){e<=ut.logLevel?console.log("%c+","font-size: 1px; padding: 20px 80px; line-height: 45px; background: url("+t+"); background-size: 160px 90px; color: transparent;"):ut.cacheLog((()=>{ut.image(e,t)}))}static releaseAllLogs(){var e=Ie.get(a),t=e.length;const n=e;if(Ie.set(a,[]),0{var r=JSON.stringify(Te(n,"postData",null));t=ot(t,Te(n,"queryParams",null));const o=new XMLHttpRequest;o.open(e,t,!0),pt.addRequestHeaders(o,Te(n,"headers",{})),o.onreadystatechange=()=>{4===o.readyState&&200===o.status||4===o.readyState&&410===o.status?i({status:o.status,responseText:o.responseText}):4===o.readyState&&200!==o.status&&a({code:o.status,reason:o.responseText})},o.send(r)}))}static addRequestHeaders(e,t){for(const n in t)t.hasOwnProperty(n)&&e.setRequestHeader(n,t[n]);return e}}(Ji=(Ji=pt=pt||{}).METHODS||(Ji.METHODS={})).GET="GET",Ji.POST="POST";const ht=pt;class mt{constructor(){this.p=null,this.res=null,this.rej=null;try{this.p=new Promise(((e,t)=>{this.res=e,this.rej=t}))}catch(e){ut.error(1,"Utils.PromiseObject","Promises not supported")}}}var ft=n(877);class vt{initiateSessionAndSource(e){return new Promise(((t,n)=>{this.isSessionRunning()&&this.isCurrentSourceSameAsPreviousSource()||this.startNewSession(e),t(!0)}))}isSessionRunning(){return this.getSessionKey()&&!this.isSessionExpired()}isSessionExpired(){var e=this.getSessionExpiryTime(),t=Ie.get("wasBrowserInactive");return!(!t&&null!==t)&&(this.isWindowActive()&&Ie.set("wasBrowserInactive",!1),(new Date).getTime()>e)}isNonEventInteractive(e){return vt.NON_INTERACTIVE_EVENTS.includes(e.name)||0"moe_non_interactive"===e.key&&1===e.value)).length}getCurrentSource(){const e=at(window.location.search);let t="";const n={};if(Object.keys(e).includes("utm_source")){t="utm_",this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n[t]=e[t])}));const i={source_url:window.location.href};return e[t+"source"]&&(i.source=e[t+"source"]),e[t+"medium"]&&(i.medium=e[t+"medium"]),e[t+"term"]&&(i.term=e[t+"term"]),e[t+"campaign"]&&(i.campaign_name=e[t+"campaign"]),e[t+"content"]&&(i.content=e[t+"content"]),e.utm_id&&(i.campaign_id=e.utm_id),Object.keys(n).length&&(i.extra=n),i}}getActiveSource(){return this.getSavedSource()||this.getCurrentSource()}isSourceOrganic(){const e=at(window.location.search),t=Object.keys(e);let n=!1;return this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n=!0)})),!t.includes("utm_source")&&!t.includes("source")&&!n}setCurrentSource(e){const t=this.getSession()||{};t.currentSource=e,We.set(q,t)}removeCurrentSource(){const e=this.getSession();e&&(e.currentSource=void 0,We.set(q,e))}getSavedSource(){var e=Te(this.getSession(),"currentSource",void 0);if(e)return e}isCurrentSourceSameAsPreviousSource(){if(this.isSourceOrganic())return!0;const e=Object.assign({},this.getCurrentSource());delete e.source_url;const t=Object.assign({},this.getSavedSource());return delete t.source_url,nt(e,t)}getSessionKey(){return Te(this.getSession(),"sessionKey",null)}getSessionStartTime(){return Te(this.getSession(),"sessionStartTime",null)}getSessionExpiryTime(){return Te(this.getSession(),"sessionExpiryTime",null)}getSessionMaxTime(){return Te(this.getSession(),"sessionMaxTime",null)}getSession(){return We.get(q)}geCustomIdentifiersToTrack(){return Te(this.getSession(),"customIdentifiersToTrack",[])||[]}generateSessionKey(){return(0,ft.v4)()}startNewSession(e){this.removeCurrentSource();var t=this.getNumberOfSessions();t={sessionKey:this.generateSessionKey(),sessionStartTime:(new Date).toISOString(),sessionMaxTime:e.configs.sessionInactiveDuration,customIdentifiersToTrack:e.configs.sourceExtraParams,sessionExpiryTime:(new Date).getTime()+1e3*e.configs.sessionInactiveDuration,numberOfSessions:++t},We.set(q,t)}extendSession(){const e=this.getSession();e&&(e.sessionExpiryTime=(new Date).getTime()+1e3*e.sessionMaxTime,We.set(q,e))}handleBrowserInactivity(e){"hidden"===e&&Ie.set("wasBrowserInactive",!0)}isWindowActive(){return!!Ie.get("isWindowActive")}getNumberOfSessions(){return Te(We.get(q),"numberOfSessions")||0}}vt.NON_INTERACTIVE_EVENTS=[d,p,d,S];class St{constructor(e,t,n){this.os="web",this.osPlatform=e.userAgent,this.isMobile=qe(),this.os=qe()?"mweb":"web",this.name=St.getBrowserName(e.userAgent,t),this.isIncognito=n}static getInstance(){return e=this,i=function*(){if(null!=Ie.get(t))return Ie.get(t);var e=yield St.isIncognito(window),n=new St(navigator,document,e);return Ie.set(t,n),(e=We.get(r.BROWSER_DETAILS))&&St.isBrowserUpdated(e,n)||We.set(t,n),n},new(n=(n=void 0)||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}));var e,n,i}static isIncognito(e){const t=e.RequestFileSystem||e.webkitRequestFileSystem;return new Promise((n=>{t?t(e.TEMPORARY,100,(()=>{n(!1)}),(()=>{n(!0)})):n(!1)}))}static getBrowserName(e,t){return-1!==e.indexOf("MSIE")||1==t.documentMode?St.BROWSER_NAMES.INTERNET_EXPLORER:-1_t(this,void 0,void 0,(function*(){let i=!0;e.key=It.getMorphedKey(e.key);let a=-1;for(let t=this.attributes.length-1;0<=t;t--)e.key===this.attributes[t].key&&(a=t);0<=a?(nt(this.attributes[a].value,e.value)&&(ut.log(2,t,"Duplicate attribute found: ",e),i=yield this.isAttibuteTrackingRequired(this.attributes[a].updated_at)),i&&(this.attributes[a].value=e.value,this.attributes[a].updated_at=(new Date).getTime())):(ut.log(2,t,"Adding attribute:",e),this.attributes.push(e)),this.save().then((()=>{n(i)}))}))))}isAttibuteTrackingRequired(e){return _t(this,void 0,void 0,(function*(){var t=yield nn.getWebSDKSettings();if(null===t.configs.userAttributeCacheTime)return!0;var n=(new Date).getTime()-e;return Math.round(n/1e3)>t.configs.userAttributeCacheTime}))}static getLocalUser(){const e=It.baseLogTag+".getLocalUser";return new Promise((t=>{var n;We.get(r.USER_DATA)?(ut.log(2,e,"Found user in localstorage"),n=We.get(r.USER_DATA),t(new It(n))):t(null)}))}static getCookieUser(){return new Promise((e=>{var t=It.baseLogTag+".getLocalUser";Ue.get(r.USER_DATA)?(ut.log(2,t,"Found user in cookie"),t=Ue.get(r.USER_DATA),e(new It(t))):e(null)}))}static getMigrationUser(){const e=It.baseLogTag+".getLocalUser";return new Promise((t=>{var n=localStorage.getItem(r.OLD_SDK.USER_DATA);if(n)try{var i=JSON.parse(n);if(i.is_new_sdk_migrated)t(null);else{const e=new It({deviceAdded:Te(i,"device_add",!1),deviceUuid:Te(i,"uuid",(0,ft.v4)())}),n=Te(i,"user_attrs",{});for(const t in n)n.hasOwnProperty(t)&&e.attributes.push(new yt(t,n[t]));var a=localStorage.getItem(r.OLD_SDK.PUSH_TOKEN);null!=a&&"NA"!==a&&"null"!==a&&(e.subscribedToOldSdk=!0),t(e)}}catch(n){ut.error(1,e,"Error getting the migration user. Resolving as a new user."),ut.error(1,e,n),t(null)}else t(null)}))}static getSync(){return It.instance}static get(){const e=It.baseLogTag+".get";return null!=Tt||(Tt=new Promise((t=>{Et.getInstance().then((n=>{nn.getWebSDKSettings().then((n=>{var i=It.getLocalUser(),a=n.isDomainLevelStorage?It.getCookieUser():"resolved",o=It.getMigrationUser();Promise.all([i,a,o]).then((i=>{const a=i[0],o=i[1],s=i[2];s?s.save().then((n=>{var i=localStorage.getItem(r.OLD_SDK.USER_DATA);if(i){const e=JSON.parse(i);e.is_new_sdk_migrated=!0,localStorage.setItem(r.OLD_SDK.USER_DATA,JSON.stringify(e))}ut.log(1,e,"User resolved from older SDK: ",n),t(n)})):(()=>{var i;if(o&&"resolved"!==o)ut.log(1,e,"User resolved from cookie: ",o),o.save().then((e=>{t(e)}));else{ut.log(1,e,"Local user: ",a);const o=new It(a);n.isPushSubBilling&&null!==(i=We.get(r.SUBSCRIPTION_DETAILS))&&void 0!==i&&i.token&&(o.deviceAdded=!0),o.save().then((e=>{t(e)}))}})()})).catch((t=>{ut.log(1,e,"Error in fetching/creating user",t)}))})).catch((t=>{ut.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}))}))),Tt}static logout(){return new Promise((e=>{Tt=null,e(!(this.instance=null))}))}save(){It.baseLogTag,It.isAmpEnabled()&&(this.deviceUuid=Ue.get("moe_uuid")),We.get("WEB_SETTINGS");var e=We.get(r.WEB_SETTINGS);return null!=e&&e.configs.isWebPersonalisationModuleEnabled&&(this.deviceUuid=this.deviceUuid||window.MoeWebP.deviceUuid),It.instance=this,new Promise((e=>{We.set(r.USER_DATA,this),Ue.setRaw(Z,It.instance.deviceUuid),e(this)}))}static isAmpEnabled(){const e=Ue.get(Z);return e&&e.includes("amp")}getAttribute(e){let t=null;return e=It.getMorphedKey(e),this.attributes.map((n=>{n.key===e&&(t=n.value)})),t}indexOfAttribute(e){let t=-1;return e=It.getMorphedKey(e),this.attributes.map(((n,i)=>{n.key===e&&(t=i)})),t}static getMorphedKey(e){switch(e){case"id":e=A;break;case"email":e=w;break;case"name":e=D;break;case"first_name":e=O;break;case"last_name":e=C;break;case"mobile":e=P;break;case"gender":e=R;break;case"birthday":e=N}return e}}It.baseLogTag="UserModel",It.isResolved=!1,It.instance=null;class At{constructor(){var e=At.baseLogTag+".constructor";const t=void 0;let n=It.getSync().getAttribute("id");n=n?n.toString():void 0;const i=window.analytics;let a,r;if(i){r=i._VERSIONS;try{a=i.user().anonymousId()}catch(t){ut.error(1,e,"Error getting anonymous id from segment api",t)}}this.c=void 0,this.h="",this.identifiers=void 0,(n||a)&&(this.identifiers={moe_user_id:n,segment_id:a}),this.meta={bid:(0,ft.v4)(),segmentSdkData:i?r:void 0}}}At.baseLogTag="ReportPostData";class wt{constructor(e,t,n){wt.baseLogTag,this.type=e,this.getParams=t,this.event=n,this.postData=new At;const i={},a={};for(const e of n.attributes)if(e&&null!=e.key&&(this.status=wt.STATUS.VALID,null!=e.value))if("function"==typeof e.value.getMonth){const t={};t[e.key]=Math.round(e.value.getTime()-6e4*e.value.getTimezoneOffset()),null==a.timestamp&&(a.timestamp=[]),a.timestamp.push(t)}else i[e.key]=e.value;this.postData.e=n.name,this.postData.a=i,this.postData.c=He(a)?void 0:a,window&&window.location&&null!=window.location.href&&(this.postData.url=window.location.href)}}wt.baseLogTag="ReportClass",(bt=(Ji=wt=wt||{}).STATUS||(Ji.STATUS={}))[bt.INVALID=0]="INVALID",bt[bt.VALID=1]="VALID",(Ji=Ji.REPORT_ADD_TYPE||(Ji.REPORT_ADD_TYPE={}))[Ji.USER_ATTRIBUTE=0]="USER_ATTRIBUTE",Ji[Ji.EVENT=1]="EVENT";const Dt=wt;function Ot(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}function Ct(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}const Pt=class{constructor(e){this.isBeaconDisabled=this.parseSentryBooleanFlag(Te(e,"b_d",!1)),this.isCardsModuleEnabled=this.parseSentryBooleanFlag(Te(e,"c_s",!1)),this.isWebPersonalisationModuleEnabled=this.parseSentryBooleanFlag(Te(e,"c_w_p_e",!1)),this.eventBatchCount=Te(e,"e_b_c",10),this.logLevel=Te(e,"log_level"),this.periodicFlushTime=Te(e,"p_f_t",30),this.isBatchingEnabled=this.parseSentryBooleanFlag(Te(e,"s_e_b_e",!1)),this.sessionInactiveDuration=Te(e,"s_i_d",1800),this.isRemoteLoggingEnabled=this.parseSentryBooleanFlag(Te(e,"s_log",!1)),this.sourceExtraParams=Te(e,"src_ext",[]),this.whitelistedEvents=Te(e,"w_e",[]),this.blacklistedEvents=Te(e,"b_e",[]),this.isAppActive=this.parseSentryBooleanFlag(Te(e,"a_s",!0)),this.remoteLogTracking=this.isRemoteLoggingEnabled&&!!this.logLevel,this.subscriberBasedBillingAttributes=Te(e,"s_b_a",[]),this.isMultiIdEnabled=this.parseSentryBooleanFlag(Te(e,"m_i_e",!1)),this.userAttributeCacheTime=Te(e,"u_a_c_t",43200)}parseSentryBooleanFlag(e="blocked"){return"allowed"===e||!0===e||"true"===e}};class Rt{constructor(){this.settingsVersion="V1",this.isDomainLevelStorage=!1,this.isConfigured=!1,this.isPushSubBilling=!1,this.platformSettings=new xt,this.optInConfig=new Nt,this.configs=new Pt({})}static parseOldSettings(e){const t=Rt.baseLogTag+".parseOldSettings",n=new Rt;if((n.oldWebData=e).webData&&!He(e.webData))if(n.isConfigured=!0,e=e.webData,n.configs=new Pt(e),n.settingsVersion=Te(e,"wp_settings_version","V1"),"V2"===n.settingsVersion)n.isDomainLevelStorage=Te(e,"domain_level_storage",!1),n.isPushSubBilling=Te(e,"sub_billing",!1),n.platformSettings.chrome.domainType=Te(e,"is_enabled",!1)?"https":"na",n.platformSettings.chrome.subscriptionMode=Te(e,"web_push_platform_data.chrome.subscription_mode","vapid"),n.platformSettings.chrome.vapidPublicKey=Te(e,"web_push_platform_data.chrome.vapid_public_key",null),n.platformSettings.firefox.subscriptionMode=Te(e,"web_push_platform_data.firefox.subscription_mode","vapid"),n.platformSettings.firefox.vapidPublicKey=Te(e,"web_push_platform_data.firefox.vapid_public_key",null),n.optInConfig.reappearTime=Te(e,"prompt_again",24),n.optInConfig.type={"1-step":"ONE_CLICK","2-step":"TWO_STEP","self-handled":"SELF_HANDLED"}[Te(e,"opt_in_type","2-step")],n.optInConfig.showOverlay=Te(e,"show_overlay",!1),n.optInConfig.loadTime=Te(e,"load_time",0),n.optInConfig.type!==Nt.TYPE.SELF_HANDLED&&(i=e,a=n.optInConfig.type,r=n.optInConfig.showOverlay,new Promise(((e,t)=>{a===Nt.TYPE.ONE_CLICK&&r?e(function(e,t){return function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){let n="",i="";const a=yield Et.getInstance();return n=a.isFirefox()?(i=Ot(`\n \n \n `,t),Ct(`\n \n \n `,t)):a.isOpera()?(i=Ot(`\n \n \n `,t),Ct(`\n \n \n `,t)):(i=Ot(`\n \n \n `,t),Ct(`\n \n \n `,t)),{mobileUI:n,webUI:i}}))}(Te(i,"overlay",null),Te(i,"hide_moe_branding",!1)).then((e=>e))):a===Nt.TYPE.TWO_STEP&&e(function(e,t){var{web:n,mobile:e}=e,n=`\n
\n
\n \n \n
\n
\n \n ${n.banner.title.text}\n \n

\n ${n.banner.body.text}\n

\n
\n ${t?"":``}\n
\n \n \n ${n.allow_button.text}\n \n
\n
\n \n \n `;return{mobileUI:`\n
\n
\n \n \n ${e.nudge.title.text}\n \n
\n
\n
\n \n \n
\n
${t?"":``}\n
\n `,webUI:n}}(Te(i,"opt_in_preview",null),Te(i,"hide_moe_branding",!1))),t("Its 1-step without overlay, so not constructing it.")})).then((e=>{n.optInConfig.softAskConfig.desktop.customHTML=e.webUI,n.optInConfig.softAskConfig.mobile.customHTML=e.mobileUI})).catch((e=>{ut.error(2,t,"Failed to construct overlay for hard ask: ",e)})));else{"false"===Te(e,"domain_level_storage",!1)?n.isDomainLevelStorage=!1:n.isDomainLevelStorage=!(!Te(e,"domain_level_storage",!1)&&"true"!==Te(e,"domain_level_storage",!1));let i=Te(e,"PushSubBilling",!1);"false"===i?i=!1:"true"===i&&(i=!0),(e=>"boolean"==typeof e)(i)||(i=!1),n.isPushSubBilling=i,n.platformSettings.chrome.domainType=Te(e,"webPushPlatformData.chrome.domain_type",""),n.platformSettings.chrome.subscriptionMode=Te(e,"webPushPlatformData.chrome.subscriptionMode","normal"),n.platformSettings.chrome.vapidPublicKey=Te(e,"webPushPlatformData.chrome.vapidPublicKey",null),n.platformSettings.firefox.enabled=!0,n.platformSettings.firefox.subscriptionMode=Te(e,"webPushPlatformData.firefox.subscriptionMode","normal"),n.platformSettings.firefox.vapidPublicKey=Te(e,"webPushPlatformData.firefox.vapidPublicKey",null),n.platformSettings.safari.websitePushId=Te(e,"webPushPlatformData.safari.websitePushId",null),null==n.platformSettings.safari.websitePushId?n.platformSettings.safari.enabled=!1:n.platformSettings.safari.enabled=!0,n.optInConfig.reappearTime=parseInt(Te(e,"promptAgain",24)),Te(e,"call_push_moengage",!0)?Te(e,"banner.banner_flag",null)?n.optInConfig.type=Nt.TYPE.TWO_STEP:n.optInConfig.type=Nt.TYPE.ONE_CLICK:(n.optInConfig.type=Nt.TYPE.SELF_HANDLED,n.optInConfig.reappearTime=0),n.optInConfig.showOverlay=Te(e,"show_overlay",!1),n.optInConfig.loadTime=Te(e,"load_time",0),n.optInConfig.softAskConfig.desktop.customHTML=Te(e,"bannerHtml.web",null),n.optInConfig.softAskConfig.mobile.customHTML=Te(e,"bannerHtml.mweb",null),Be.get().disableCookies&&(n.isDomainLevelStorage=!1,ut.warn(2,t,"Cookies Storage Been Disabled"))}else n.isConfigured=!1;var i,a,r;return n}}Rt.baseLogTag="SdkSettings";class Nt{constructor(){this.type=Nt.TYPE.NA,this.reappearTime=24,this.softAskConfig={desktop:new Lt,mobile:new Lt}}}class Lt{constructor(){this.customHTML=null}}(Ji=(Ji=Nt=Nt||{}).TYPE||(Ji.TYPE={})).NA="NA",Ji.ONE_CLICK="ONE_CLICK",Ji.TWO_STEP="TWO_STEP",Ji.SELF_HANDLED="SELF_HANDLED";class Mt{constructor(){this.enabled=!1,this.websitePushId=null}}class kt{constructor(){this.enabled=!1,this.isServiceWorkerRoot=!0,this.serviceWorkerFilename="serviceworker.js",this.subscriptionMode="normal",this.vapidPublicKey=null,this.domainType=""}}(Ji=(Ji=kt=kt||{}).DOMAIN_TYPE||(Ji.DOMAIN_TYPE={})).NA="NA",Ji.HTTPS="https",Ji.MUTLI="multi";class xt{constructor(){this.safari=new Mt,this.chrome=new kt,this.firefox=new kt}}const Bt=Rt;class Ut{static initialize(){return e=this,n=function*(){if(null==Ut.ready){Ut.offlineDataStore=_e.createInstance({driver:[_e.INDEXEDDB],name:ie,storeName:ae.NAME});const t=_e.createInstance({driver:[_e.INDEXEDDB],name:ie,storeName:"moe_data"}),n=_e.createInstance({driver:[_e.INDEXEDDB],name:ie,storeName:"moe_backup"});var e=[Ut.offlineDataStore.ready(),t.ready(),n.ready()];Ut.ready=Promise.all(e)}return yield Ut.ready},new(t=(t=void 0)||Promise)((function(i,a){function r(e){try{s(n.next(e))}catch(e){a(e)}}function o(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var n;e.done?i(e.value):((n=e.value)instanceof t?n:new t((function(e){e(n)}))).then(r,o)}s((n=n.apply(e,[])).next())}));var e,t,n}}class Ft{constructor(e){this.EVENT_ACTION=e.event.name,this.EVENT_ATTRS=e.event.attributes&&Wt(e.event.attributes),this.EVENT_G_TIME=(new Date).getTime().toString(),this.EVENT_L_TIME=it(),this.EVENT_ATTRS_CUST=e.postData.c,this.N_I_E=e.postData.nie}}Ft.baseLogTag="ReportAddViewEvent";const Wt=e=>{const t={};return e.forEach((e=>{t[e.key]=e.value})),t};class Ht{static visibilityChange(){"hidden"===document.visibilityState&&(Ht.windowClosed||zt.reactToTriggerEvents())}static removeEventListeners(){document.removeEventListener("visibilitychange",Ht.visibilityChange,!1)}static addListeners(){document.addEventListener("visibilitychange",Ht.visibilityChange,!1)}}Ht.windowClosed=!1;const Kt=Ht;function Gt(e,t){try{var n=$e();return!(null==e||!e.configs.isBatchingEnabled||("web"!==n||t.name!==Et.BROWSER_NAMES.CHROME&&t.name!==Et.BROWSER_NAMES.EDGE&&t.name!==Et.BROWSER_NAMES.OPERA)&&("mobile"!==n||Et.isIOS()||t.name!==Et.BROWSER_NAMES.CHROME&&t.name!==Et.BROWSER_NAMES.OPERA)||!navigator.sendBeacon)}catch(e){ut.error(1,"Utils.batching.isBatchingSupported",e)}}class Vt{static getRemoteLogsBatchRequestOptions(e){return new Promise((t=>{nn.collectGetParams().then((n=>{n={query_params:Object.assign(Object.assign({},n),{unique_id:n.unique_id,os:"web"===n.os?"Web":"mWeb"}),logs:[...e]},t(n)}))}))}static sendBatchOfLogs(e){const t=nn.baseLogTag+".sendBatchOfLogs";return new Promise(((n,i)=>{Vt.getRemoteLogsBatchRequestOptions(e).then((i=>{var a=(a=Be.get()).baseDomainName+fe+i.query_params.os.toLowerCase()+"/"+a.appId;ht.post(a,{postData:i}).then((()=>{ut.log(1,t,"[sendBatchOfLogs] batch payload: "+JSON.stringify(e)),ut.log(1,t,"Batch Remote Logs sent to MoEngage successfully"),Vt.batchRemoteLogsApiRetries=1,n(!0)})).catch((n=>{ut.log(1,t,"Batch Remote Logs API failed",n),this.handleRemoteLogsFailure(e)}))}))}))}static handleRemoteLogsFailure(e){var t=nn.baseLogTag+".handleRemoteLogsFailure";ut.log(1,t,"Retry Batch Logs Failed API",Vt.batchRemoteLogsApiRetries),Vt.batchRemoteLogsApiRetries<3&&setTimeout((()=>{Vt.batchRemoteLogsApiRetries++,Vt.sendBatchOfLogs(e)}),3e3*Vt.batchRemoteLogsApiRetries)}static sendBeacon(e){Vt.getRemoteLogsBatchRequestOptions(e).then((e=>{var t=(t=Be.get()).baseDomainName+fe+e.query_params.os.toLowerCase()+"/"+t.appId+"?"+(new Date).getTime();ut.log(1,"RemoteLogsApi.sendBeacon","[sendBeacon] Remote Logs batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}}Vt.batchRemoteLogsApiRetries=1;var jt=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Yt{static updateEventStore(){$e()!==ye.TV&&_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:"moe_tracking",storeName:Q}).setItem(Q,Yt.reports)}static spliceReports(e=Yt.reports.length){return e=Yt.reports.splice(0,e),Yt.updateEventStore(),e}static spliceRemoteLogs(e=Yt.remoteLogs.length){return Yt.remoteLogs.splice(0,e)}static shouldCreateNewBatch(){return!Yt.lastbatchCreatedAt||(new Date).getTime()-Yt.lastbatchCreatedAt>=oe}static shouldCreateNewBatchForRemoteLogs(){return!Yt.lastRemoteLogsbatchCreatedAt||(new Date).getTime()-Yt.lastRemoteLogsbatchCreatedAt>=oe}static reactToTriggerEvents(){var e=Yt.baseLogTag+".reactToTriggerEvents";0jt(this,void 0,void 0,(function*(){(Yt.isOfflineBatchingSupported(t,e)||e.configs.remoteLogTracking)&&(yield Ut.initialize(),Yt.periodicSyncInterval&&Yt.clearInterval(),Yt.periodicSyncInterval=window.setInterval(Yt.periodicSync.bind(this,e.configs.periodicFlushTime),1e3*e.configs.periodicFlushTime),Kt.addListeners())}))))}static sendBatch(e){var t=Yt.baseLogTag+".sendBatch";try{nn.sendBatchOfReports(e).then((()=>{Yt.lastbatchCreatedAt=(new Date).getTime()}))}catch(e){ut.error(1,t,"Error in sending batch",e)}}static sendRemoteLogs(e){var t=Yt.baseLogTag+".sendRemoteLogs";try{Vt.sendBatchOfLogs(e).then((()=>{Yt.lastRemoteLogsbatchCreatedAt=(new Date).getTime()}))}catch(e){ut.error(1,t,"Error in sending batch of remote logs",e)}}static createBatch(e){0{t(e)})),Te(qt.topicListeners,e.topic,[]).map((t=>{t(e)}))}static broadcastToWindow(e){window&&window.dispatchEvent(new CustomEvent(e.topic,{detail:{name:e.name,data:e.data||null}}))}static deprecatedSdkCallback(e){window.dispatchEvent(new CustomEvent("MOE_OPT_IN",{detail:e}))}static resetAllListeners(){qt.listeners=[],qt.topicListeners={}}static resetListeners(){qt.listeners=[]}}qt.listeners=[],qt.topicListeners={};const $t=qt;class Jt{constructor(e,t,n=!0){this.name=e,this.attributes=t,this.timestamp=(new Date).getTime(),n&&this.attributes.push(new yt("URL",location.href))}static createUserAttributeEvent(e){return new Promise(((t,n)=>{const i=[],a=e.key;switch(e.key){case"id":e.key=A;break;case"email":e.key=w;break;case"name":e.key=D;break;case"first_name":e.key=O;break;case"last_name":e.key=C;break;case"mobile":e.key=P;break;case"gender":e.key=R;break;case"birthday":e.key=N}i.push(e),It.get().then((n=>{var r=n.indexOfAttribute("oldUniqueIds");e.key===A&&-1{It.get().then((a=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){try{var r=new yt("moe_logged_in_status",!!a.getAttribute("id"));const s=new vt;var o=new yt("moe_first_visit",s.getNumberOfSessions()<=1);t.push(r,o),i(new Jt(e,t,n))}catch(r){ut.error(1,"Event.createEvent","Error occurred in create events ",r)}}))))}))}}class Xt{static addEvent(e){Xt.history.push(e),Xt.listeners.forEach((t=>{t(e)}))}static getHistory(){return Xt.history}static addEventListener(e){Xt.listeners.push(e)}static clear(){Xt.history=[]}static clearListeners(){Xt.listeners=[]}}Xt.history=[],Xt.listeners=[];class Qt{static track(e,t,n){const i="MoEngage.event.trackEvent";return new Promise(((a,r)=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){var r;let o;n=!!n;try{o=yield nn.getWebSDKSettings()}catch(r){return ut.error(1,i,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),void a(!1)}if("string"==typeof e&&e)if(o.configs.blacklistedEvents&&o.configs.blacklistedEvents.includes(e))ut.error(1,i,`This event "${e}" is blacklisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is blacklisted.`});else if(!ce.includes(e)||o.configs.whitelistedEvents&&o.configs.whitelistedEvents.includes(e))try{const s=[];if(null==t||null!==t&&t===Object(t)&&"[object Object]"===Object.prototype.toString.call(t)){for(const e in t=null==t?{}:t)t.hasOwnProperty(e)&&s.push(new yt(e,t[e]));const i=new vt;yield i.initiateSessionAndSource(o);const l=yield Jt.createEvent(e,s);Xt.addEvent(l),null!=o&&o.configs.isWebPersonalisationModuleEnabled&&null!==(r=window.MoeWebP)&&void 0!==r&&r.handleInSessionEvent(l),nn.collectGetParams().then((t=>{lt(e)&&delete t.push_id;const r=new Dt(Dt.REPORT_ADD_TYPE.EVENT,t,l);var o={session_id:i.getSessionKey(),start_time:i.getSessionStartTime(),background_initiated:0};const s=[];(t=i.getActiveSource())&&(i.setCurrentSource(t),s.push(t)),r.postData.meta.session=o,s.length&&(r.postData.meta.source=s),i.isNonEventInteractive(l)&&(r.postData.nie=1),nn.reportAdd(r,n).then((()=>{i.isNonEventInteractive(l)||i.extendSession(),a(!0)}))}))}else ut.error(1,i,"Event attributes were not passed a key-value pair object for event: "+e),a({error:5002,message:"Event value needs to be a key-value pair object"})}catch(r){ut.error(1,i,"Error occurred in tracking events ",r)}else ut.error(1,i,`This event "${e}" has not been whitelisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is not whitelisted.`});else ut.error(1,i,"Event name not a string or null or empty string:",e),a({error:5001,message:"Event name can not be null"})}))))}}var Zt,en,tn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class nn{static deviceAdd(){return new Promise(((e,t)=>{const n=Be.get();return nn.collectGetParams(ve).then((i=>{i={queryParams:i=Object.assign(Object.assign({},i),{url:window.location.href})},ht.post(n.baseDomainName+ve,i).then((()=>{this.trackDeviceAttributes(),It.get().then((t=>{t.deviceAdded=!0,t.save().then((()=>{on.startPeriodicClear(r.Q.REPORT),nn.onDeviceAdd.res(),e(!0)}))}))})).catch((e=>{Ae.enqueue(r.Q.DEVICE,!0),t(!1)}))}))}))}static trackDeviceAttributes(){return new Promise(((e,t)=>tn(this,void 0,void 0,(function*(){let t=$e().toUpperCase();t="WEB"===t?"DESKTOP":t,Qt.track(E,{deviceType:t});let n=We.get(r.PUSH_TOKEN);n||"granted"===(yield window.Moengage.device.getPermissionState())&&(n=!0),Qt.track(E,{[me]:!!n,source:"deviceAdd"}),We.set(r.OPTED_STATUS_TRACK_TIME,Date.now()),e(null)}))))}static reportAdd(e,t){const n=nn.baseLogTag+".reportAdd";return new Promise(((i,a)=>(t=!!t,nn.getWebSDKSettings().then((o=>{o.isPushSubBilling?It.get().then((o=>{o.deviceAdded?nn.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)})):(Ae.enqueue(r.Q.REPORT,e),ut.log(1,n,"Report added to queue as device not added yet:",e.event.name),ut.log(2,n,"Event Queued:",e.event.name),e.type===Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE&&(nn.isPushSubAttributeAccepted(e.event.attributes[0].key)?(ut.log(1,n,"Attribute accepted for push sub billing."),nn.deviceAdd()):ut.log(2,n,"Attribute NOT accepted for push sub billing.")),i(!0))})):nn.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)}))})).catch((e=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)})))))}static sendBroadcast(e){le.NAMES.includes(e.event.name)&&$t.broadcastToWindow({topic:le.TOPIC,name:e.event.name,data:e.event.attributes})}static getSegmentId(){const e=window.analytics;if(e&&e.user)return e.user().anonymousId()}static getBatchRequestOptions(e){return new Promise((t=>{nn.collectGetParams(re).then((n=>{var i=nn.getSegmentId()||"";const a=It.getSync(),r=new vt;var o={session_id:r.getSessionKey(),start_time:r.getSessionStartTime(),background_initiated:0};const s=[];var l=r.getActiveSource();l&&(r.setCurrentSource(l),s.push(l)),o={query_params:n,identifiers:{moe_user_id:a.getAttribute("id")||void 0,segment_id:i||void 0},meta:{bid:(0,ft.v4)(),request_time:(new Date).toISOString(),session:o,source:s.length?s:void 0},viewsCount:e.length,viewsInfo:[...e]},t(o)}))}))}static addReportsToOfflineDB(e,t){return tn(this,void 0,void 0,(function*(){const n=nn.baseLogTag+".addReportsToOfflineDB";var i=yield nn.getBatchRequestOptions([]);yield Ut.offlineDataStore.setItem(t||"report_add_"+(new Date).getTime(),e),yield Ut.offlineDataStore.setItem("requestMetaData",i),navigator.serviceWorker&&navigator.serviceWorker.ready.then((e=>{e.sync?e.sync.register("moe_offline_data_sync").then((()=>{ut.log(2,n,"offline sync event registered")})).catch((e=>{ut.error(1,n,"Service worker sync error",e)})):ut.log(2,n,"Service worker sync unavailable")}))}))}static sendReportBeacon(e,t,n){var i=nn.baseLogTag+".sendReportBeacon";try{if(!e&&navigator.sendBeacon&&navigator.sendBeacon(t,new Blob([JSON.stringify(n)],{type:"text/plain;charset=UTF-8"})))return!0}catch(e){ut.error(2,i,"Failed to send Report call with Beacon:",e)}return!1}static sendBatchOfReports(e){const t=nn.baseLogTag+".sendBatchOfReports";return new Promise(((n,i)=>{nn.getBatchRequestOptions(e).then((a=>{var r=Be.get();const o=r.baseDomainName+re+r.appId;nn.getWebSDKSettings().then((i=>window.navigator.onLine?nn.sendReportBeacon(i.configs.isBeaconDisabled,o,a)?(ut.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),ut.log(1,t,"Batch sent to MoEngage successfully through beacon"),void n(!0)):void ht.post(o,{postData:a}).then((()=>{ut.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),ut.log(1,t,"Batch sent to MoEngage successfully"),n(!0)})).catch((a=>{ut.error(1,t,"Batch Report add API failed",a),n(this.sendToOfflineTracking(e,a,i))})):this.sendToOfflineTracking(e,"User is offline.",i))).catch((e=>{ut.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),i(e)}))}))}))}static sendToOfflineTracking(e,t,n){const i=nn.baseLogTag+".sendToOfflineTracking";return ut.error(1,i,"Add Report API failed, adding reports to offline db. ",t),new Promise(((a,r)=>{Et.getInstance().then((o=>{zt.isOfflineBatchingSupported(o,n)?(nn.addReportsToOfflineDB(e).then((()=>{ut.log(2,i,"Network offline: Batch added to offline db")})),a(!0)):r(t)})).catch((()=>{r(t)}))}))}static reportAddInternal(e,t){const n=nn.baseLogTag+".reportAddInternal";return new Promise(((i,a)=>{nn.getWebSDKSettings().then((a=>{Et.getInstance().then((o=>{if(t){const t=nn.getUpdatedPushDetails();for(const n in t)!t.hasOwnProperty(n)||lt(e.event.name)&&"push_id"===n||(e.getParams[n]=t[n]);var s=Je();const n={queryParams:Object.assign(Object.assign({},e.getParams),s)};if(e.postData.nie){const t=Object.assign({},e);delete t.postData.meta.source,delete t.postData.meta.session,n.postData=t.postData}else n.postData=e.postData;s=Be.get().baseDomainName,s+=ve,ht.post(s,n).then((()=>{let t=$e().toUpperCase();t="WEB"===t?"DESKTOP":t,Qt.track(E,{deviceType:t}),i(nn.handleReportAddSuccess(e))})).catch((t=>{Gt(a,o)?Ae.enqueue(r.Q.DEVICE,e):nn.handleReportAddFailure(e,t)}))}else Gt(a,o)?(zt.addReport(e,a.configs.eventBatchCount)&&(ut.log(1,n,"Event batched successfully:",e.event),this.addEventsToIDB(e.event)),i(!0)):(s=new Ft(e),st(s)?(ut.error(1,n,ct(s.EVENT_ACTION)),i(!1)):nn.sendBatchOfReports([s]).then((()=>{i(nn.handleReportAddSuccess(e))})).catch((t=>{nn.handleReportAddFailure(e,t)})))}))})).catch((e=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)}))}))}static handleReportAddSuccess(e){var t=nn.baseLogTag+".handleReportAddSuccess";return e.type===Dt.REPORT_ADD_TYPE.EVENT?(ut.log(1,t,"Event tracked successfully:",e.event),this.addEventsToIDB(e.event)):e.type===Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE&&ut.log(1,t,"User attribute added successfully:",e.event.attributes),nn.addReportApiRetries=1,!0}static handleReportAddFailure(e,t){var n=nn.baseLogTag+".handleReportAddFailure";ut.error(1,n,"Add Report API failed",t),e.type===Dt.REPORT_ADD_TYPE.EVENT?ut.log(1,n,"Queueing unsuccessful event tracking:",e.event):e.type===Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE&&ut.log(1,n,"Queueing unsuccessful user attribute add:",e.event.attributes),nn.addReportApiRetries<3&&setTimeout((()=>{nn.addReportApiRetries++,Ae.enqueue(r.Q.REPORT,e),on.startPeriodicClear(r.Q.REPORT)}),3e3*nn.addReportApiRetries)}static checkIfTokenValid(e){const t=Be.get().baseDomainName+Se,n=Be.get();return new Promise((i=>{e?It.get().then((a=>{a={queryParams:{app_id:n.appId,unique_id:a.deviceUuid,push_id:e}},ht.post(t,a).then((e=>{200===e.status?i(!0):i(!1)})).catch((e=>{i(!1)}))})):i(!1)}))}static isAppBlocked(e){return!(!e||!1!==e.configs.isAppActive)}static getWebSDKSettings(){return new Promise(((e,t)=>{let n=Be.get();var i,a;null!=n&&null!=n.appId||(n=new Be(We.get(r.INIT_DATA))),nn.sdkSettings?nn.isAppBlocked(nn.sdkSettings)?t(!1):e(nn.sdkSettings):(i=(new Date).getTime(),null==(a=We.get(r.SETUP_TIME))||0{e(t)})).catch((e=>{t(!1)})):We.get(r.WEB_SETTINGS)?(nn.sdkSettings=We.get(r.WEB_SETTINGS),nn.isAppBlocked(nn.sdkSettings)?t(!1):e(nn.sdkSettings)):nn.getAndPersistWebSettings(n).then((t=>{e(t)})).catch((e=>{t(!1)})))}))}static getAndPersistWebSettings(e){const t=nn.baseLogTag+".getAndPersistWebSettings";return new Promise(((n,i)=>tn(this,void 0,void 0,(function*(){try{var a={queryParams:{app_id:(e=null==e.appId?new Be(We.get(r.INIT_DATA)):e).appId}};ut.log(1,t,"Fetching latest web sdk settings for",e.appId);var o=yield ht.get(e.baseDomainName+"v2/websdksettings",a);ut.log(1,t,"Fetching config settings for",e.appId);let h=o.responseText;"string"==typeof h&&(h=JSON.parse(h));var s=qe()?"mweb":"web",l=e.baseDomainName+$+s+"/"+e.appId;try{var c,d=We.get(r.USER_DATA),g={postData:{query_params:{unique_id:d&&d.deviceUuid}}},u=yield ht.post(l,g);ut.log(1,t,"Fetched latest web and config settings"),200===u.status&&(c=u.responseText,c=JSON.parse(c),h.webData=Object.assign(Object.assign({},h.webData),c))}catch(e){ut.error(1,t,"Config API failed")}var p=(new Date).getTime();if(h=Bt.parseOldSettings(h),We.set(r.WEB_SETTINGS,h),We.set(r.SETUP_TIME,p),nn.isAppBlocked(h))return void i(!1);nn.sdkSettings=h,n(h)}catch(a){ut.error(1,t,"Settings APi Failed: ",a),nn.webSdkApiRetries<3?setTimeout((()=>{nn.webSdkApiRetries++,n(nn.getAndPersistWebSettings(e))}),3e3*nn.webSdkApiRetries):i(!1)}}))))}static collectGetParams(e){return new Promise(((t,n)=>{It.get().then((n=>{let i=Be.get();null!=i&&null!=i.appId||(i=new Be(We.get(r.INIT_DATA)));const a=new Date,o=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds());Et.getInstance().then((a=>{var s,l=Je(e,[Ee,ve,re]);const c=Object.assign({os:a.os,os_platform:a.osPlatform,is_incognito:a.isIncognito,app_id:i.appId,os_ver:a.name,sdk_ver:"5.0.690",model:a.name,app_ver:"1.0",device_ts:Number(o),device_tz_offset:(-6e4*(new Date).getTimezoneOffset()).toString(),unique_id:n.deviceUuid,device_tz:(new Date).getTimezoneOffset().toString()},l);l=n.getAttribute("cart_token"),Ye()&&l&&null!==(s=this.sdkSettings)&&void 0!==s&&s.configs.isMultiIdEnabled&&e!==ve&&(c.cart_token=l),null!=(l=We.get(r.PUSH_TOKEN))&&"NA"!==l&&""!==l&&"null"!==l&&(c.push_id=l),a.isWebPushCompatible()&&(Ve(this.sdkSettings.platformSettings,a)?(c.subscription_type="vapid",c.vapid_public=je(this.sdkSettings.platformSettings,a)):c.subscription_type="normal"),null!=i.environment&&(c.environment=i.environment),a.name===Et.BROWSER_NAMES.SAFARI&&(c.websitePushId=this.sdkSettings.platformSettings.safari.websitePushId);var d=We.get(r.SUBSCRIPTION_DETAILS);if(null!=d&&null!=d.keys){for(const e in d.keys)c["keys_"+e]=encodeURI(d.keys[e]);null!=d.endpoint&&(c.endpoint=encodeURI(d.endpoint)),c.expirationTime=d.expirationTime}t(c)}))}))}))}static getUpdatedPushDetails(){const e={};var t=We.get(r.SUBSCRIPTION_DETAILS);if(null!=t){var n=We.get(r.PUSH_TOKEN);if(null!=n&&"NA"!==n&&""!==n&&"null"!==n&&(e.push_id=n),t.keys){for(const n in t.keys)e["keys_"+n]=encodeURI(t.keys[n]);null!=t.endpoint&&(e.endpoint=encodeURI(t.endpoint)),e.expirationTime=t.expirationTime}}return e}static isPushSubAttributeAccepted(e){var t;return!!(e===w||e===P||null!==(t=this.sdkSettings)&&void 0!==t&&t.configs.subscriberBasedBillingAttributes.includes(e))}static sendBeacon(e){if(!window.navigator.onLine)return this.sendToOfflineTracking(e,"User is offline.");nn.getBatchRequestOptions(e).then((e=>{var t=(t=Be.get()).baseDomainName+re+t.appId+"?"+(new Date).getTime();ut.log(1,"MoeApi.sendBeacon","[sendBeacon] batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}static addEventsToIDB(e){if($e()!==ye.TV){const t=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:J,storeName:X});null!=t&&t.setItem(e.name,e)}}}nn.baseLogTag="MoeApi",nn.onDeviceAdd=new mt,nn.webSdkApiRetries=1,nn.offlineEvents=[],nn.addReportApiRetries=1;const an=n(967),rn=r.Q;class on{static clear(e){var t=on.baseLogTag+".clear";const n=[];for(;!Ae.isEmpty(e);)switch(e){case rn.REPORT:const i=Ae.dequeue(rn.REPORT);n.push((e=>{nn.reportAdd(i).then((()=>{e()}))}));break;case rn.DEVICE:Ae.dequeue(rn.DEVICE)&&n.push((e=>{nn.deviceAdd().then((()=>{e()}))}));break;default:ut.error(1,t,"Do not know how to handle queue with name:",e)}setTimeout((()=>{on.processing[e]=!0,an(n,5,((t,n)=>{on.processing[e]=!1}))}),0)}static startPeriodicClear(e){const t=on.baseLogTag+".startPeriodicCleanQ";on.clearInterval(e);var n=()=>{Ae.isEmpty(e)?(ut.log(1,t,"If you see multiple event tracks with same, they were captured over multiple visits or page refreshes."),Te(on.processing,e,!1)||on.clearInterval(e)):(on.clear(e),ut.log(1,t,"Starting periodic queue clear for",e))};n(),on.intervals[e]=setInterval(n,6e3)}static clearInterval(e){null!=on.intervals[e]&&(clearInterval(on.intervals[e]),on.intervals[e]=null)}}on.baseLogTag="QManager",on.intervals={},on.processing={},(Ji=Zt=Zt||{}).PROMPT="prompt",Ji.GRANTED="granted",Ji.DENIED="denied",Ji.DISMISSED="dismissed";class sn{static addCallback(e,t){null!=e&&null!=t&&(null==sn.callbacks[e]&&(sn.callbacks[e]=[]),sn.callbacks[e].push(t))}static getCallbacks(e){return sn.callbacks[e]||[]}static runCallbacks(e){sn.getCallbacks(e).forEach((e=>{e()}))}}sn.callbacks={};class ln{constructor(e){this.swRegisterPromise=null,this.swActiveRetries=1;const t=ln.baseLogTag+".constructor";this.sdkSettings=e,this.registerServiceWorker().then((e=>{this.sendDataToServiceWorker()})).catch((e=>{ut.error(1,t,"Error registering serviceworker:",e)}))}showHardAsk(){const e=ln.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{ln.isWebPushSupported().then((i=>{i?this.getCurrentPermissionState().then((i=>{this.registerServiceWorker().then((a=>{i!==Zt.DENIED?(ut.remoteLogTracking(1,"info",e,"Attempting to open hard ask"),Qt.track(v),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_ATTEMPTED}),this.showOverlay(),this.askPermission().then((n=>{this.hideOverlay(),ut.remoteLogTracking(2,"info",e,"Permission state after hard ask:",n),n===Zt.GRANTED?this.getPushTokenDetails().then((e=>{this.sendDataToServiceWorker(e.token),t({state:n,subscriptionDetails:e})})):(this.sendDataToServiceWorker(),t({state:n,subscriptionDetails:null}))})).catch((t=>{ut.error(1,e,t),n(W)}))):(ut.remoteLogTracking(1,"info",e,"Hard ask not shown as permission state is",i),t({state:i,subscriptionDetails:null}))})).catch((t=>{ut.error(1,e,"Error registering serviceworker:",t),n(t)}))})).catch((t=>{ut.error(1,e,"Registering service worker failed:",t),n(W)})):(ut.warn(1,e,"Web push not supported in current browser environment"),n(F))}))}))}sendDataToServiceWorker(e){return new Promise((t=>{nn.collectGetParams().then((t=>{var n;e&&(t.push_id=e||We.get(r.PUSH_TOKEN)||void 0),t.isBatchingEnabled=We.get(r.WEB_SETTINGS).configs.isBatchingEnabled,Ye()||null!==(n=Be.get())&&void 0!==n&&n.swScope?_e.createInstance({driver:[_e.INDEXEDDB],name:"moe_database",storeName:"moe_data"}).setItem("reportParams",{data:t}):navigator.serviceWorker.ready.then((()=>{this.sendDataToServiceWorkerOnControllerReady(t)}))}))}))}sendDataToServiceWorkerOnControllerReady(e){if(navigator.serviceWorker.controller){if("chrome-extension:"===window.location.protocol)return chrome.runtime.sendMessage({data:e});navigator.serviceWorker.controller.postMessage({data:e})}else this.swActiveRetries<3&&setTimeout((()=>{this.swActiveRetries++,this.sendDataToServiceWorkerOnControllerReady(e)}),500)}getCurrentPermissionState(){return Et.getInstance().then((e=>navigator.permissions&&!e.isSafari()?navigator.permissions.query({name:"notifications"}).then((e=>ln.parsePermissionState(e.state))).catch((e=>{})):new Promise((t=>{let n=Notification.permission;e.isSafari()&&"default"===n&&(n="prompt",We.get(he)&&(n="denied")),t(ln.parsePermissionState(n))}))))}getPushTokenDetails(){const e=ln.baseLogTag+".getPushTokenDetails";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((n=>{Et.getInstance().then((i=>{n!==Zt.GRANTED?t({token:null,raw:null}):this.registerServiceWorker().then((n=>{let a=null;const r={userVisibleOnly:!0};Ve(this.sdkSettings.platformSettings,i)&&(a=je(this.sdkSettings.platformSettings,i),r.applicationServerKey=Ke(a));const o=()=>{n.pushManager.subscribe(r).then((e=>{(e=>{const n=e.toJSON();var a=e.endpoint.substring(0,n.endpoint.lastIndexOf("/")+1);e=n.expirationTime;let r=n.endpoint.split("/")[n.endpoint.split("/").length-1];i.isEdge()&&(r=r.replace("?token=",""));const o={};if(n.keys)for(const e in n.keys)n.keys.hasOwnProperty(e)&&(o[e]=n.keys[e]);t({token:r,endpoint:a,keys:o,expirationTime:e,raw:n})})(e)})).catch((n=>{ut.error(1,e,"Error in subscribtion: ",n),t({token:null,raw:null})}))};n.pushManager.getSubscription().then((e=>{if(e)if("vapid"===this.sdkSettings.platformSettings.chrome.subscriptionMode&&e.options&&e.options.applicationServerKey){var t=Ge(e.options.applicationServerKey);[a,a+"=",a+"==",Ge(Ke(a))].indexOf(t)<0?e.unsubscribe().then((()=>{o()})):o()}else o();else o()}))})).catch((n=>{ut.error(1,e,"Error in getting push token: ",n),t({token:null,raw:null})}))}))}))}))}removeToken(){return We.remove(r.PUSH_TOKEN),We.remove(r.OPTED_STATUS_TRACK_TIME),We.remove(r.SUBSCRIPTION_DETAILS),Promise.resolve()}askPermission(){return new Promise(((e,t)=>{Notification.requestPermission().then((t=>{We.set(r.OPT_IN_SHOWN_TIME,Date.now()),Qt.track(p),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_SHOWN}),$t.deprecatedSdkCallback("opt_in_shown"),sn.runCallbacks(U.HARD_ASK_SHOWN),e(ln.parsePermissionState(t))})).catch((e=>{t(K)}))}))}registerServiceWorker(){const e=ln.baseLogTag+".registerServiceWorker";return"chrome-extension:"===window.location.protocol?navigator.serviceWorker.ready:(null!=this.swRegisterPromise||(this.swRegisterPromise=new Promise(((t,n)=>{if(ln.registeredServiceWorker)t(ln.registeredServiceWorker);else if("serviceWorker"in navigator){let i="serviceworker.js",a=!1;if(Be.get()&&null!=Be.get().swPath&&(i=Be.get().swPath,a=!0),"/"===i[0]||i.startsWith("http")||(i="/"+i),Ye())ut.log(1,e,"Removing scope in case of shopify."),this.registerScopedSW(i,/moengage/,t,n);else{let r="/";Be.get()&&null!=Be.get().swScope?(r=Be.get().swScope,this.registerScopedSW(i,r,t,n)):(a&&(ut.log(1,e,"Using user defined path to serviceworker:",i),r=i.substr(0,i.lastIndexOf("/")+1),ln.canSwBeRegisteredWithScope(r)||(ut.error(1,e,"Service worker can only be registered from same directory or child directory."),n(G))),navigator.serviceWorker.register(i,{scope:r}).then((i=>{ut.log(2,e,"Serviceworker registered"),navigator.serviceWorker.ready.then((n=>{ut.log(2,e,"Serviceworker ready"),ln.registeredServiceWorker=n,Be.get()&&Be.get().forceSwUpdate&&n.update(),t(n)})).catch((t=>{ut.error(1,e,"Service worker register failed:",t),n(W)}))})).catch((t=>{ut.error(1,e,"Service worker register failed:",t),n(W)}))),ut.log(1,e,"Scope for serviceworker:",r)}}else ut.error(1,e,"Service worker not supported"),n("Service worker not supported")}))),this.swRegisterPromise)}registerScopedSW(e,t,n,i){const a=ln.baseLogTag+".registerScopedSW";navigator.serviceWorker.register(e).then((e=>{ut.log(2,a,"Serviceworker registered"),navigator.serviceWorker.getRegistrations().then((e=>{e.forEach((e=>{setTimeout((()=>{e.active&&e.active.scriptURL.match(t)&&(ut.log(2,a,"Serviceworker ready"),ln.registeredServiceWorker=e,Be.get()&&Be.get().forceSwUpdate&&e.update(),n(e))}),100)}))})).catch((e=>{ut.error(1,a,"Service worker register failed:",e),i(W)}))})).catch((e=>{ut.error(1,a,"Service worker register failed:",e),i(W)}))}static canSwBeRegisteredWithScope(e){var t=window.location.pathname;return e=e,!((t=t).indexOf(e)<0)&&0<=t.substring(t.indexOf(e)).length}static isWebPushSupported(){return new Promise((e=>{Et.getInstance().then((t=>{!t.isIncognito&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&t.isWebPushCompatible()?e(!0):e(!1)}))}))}static parsePermissionState(e){return"prompt"===e?Zt.PROMPT:"granted"===e?Zt.GRANTED:"denied"===e?Zt.DENIED:"default"===e?Zt.DISMISSED:null}showNotification(e){const t=ln.baseLogTag+".showNotification";this.registerServiceWorker().then((n=>{e?e.title?e.body?(null==e.requireInteraction&&(e.requireInteraction=!0),n.showNotification(e.title,e)):ut.error(1,t,"Notification body can not be blank"):ut.error(1,t,"Notification title can not be blank"):ut.error(1,t,"Notification object can not be blank")})).catch((e=>{ut.error(1,t,"Error registering serviceworker:",e)}))}showOverlay(){if(this.sdkSettings.optInConfig.showOverlay&&this.sdkSettings.optInConfig.type===Nt.TYPE.ONE_CLICK){const e=document.createElement("div");e.id="moe-push-div",e.style.display="none",e.className="moe-push-class",Et.getInstance().then((t=>{t.isMobile?e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.mobile.customHTML:e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.desktop.customHTML;const n=document.body.firstChild;let i;if(n.parentNode.insertBefore(e,n),(t=t.name)===Et.BROWSER_NAMES.CHROME||t===Et.BROWSER_NAMES.OPERA_NEON?i=document.getElementsByClassName("moe_chrome"):t===Et.BROWSER_NAMES.FIREFOX?i=document.getElementsByClassName("moe_firefox"):t!==Et.BROWSER_NAMES.OPERA&&t!==Et.BROWSER_NAMES.SAFARI||(i=document.getElementsByClassName("moe_opera")),0===i.length)document.getElementById("moe-push-div").style.display="none";else for(let e=i.length-1;0<=e;e--)i[e].style.display="block";this.overlayTimer=window.setTimeout((()=>{""===e.style.opacity&&(e.style.display="block")}),1500),e.onclick=()=>{this.hideOverlay()}}))}}hideOverlay(){clearTimeout(this.overlayTimer);const e=document.getElementById("moe-push-div");null!=e&&(e.style.visibility="none",e.style.opacity="0",e.parentNode.removeChild(e))}}ln.baseLogTag="HTTPS-NotificationManager";const cn="Web push settings not configured on MoEngage dashboard: "+z;class dn{constructor(e,t){this.currentManager=null;var n=dn.baseLogTag+".constructor";this.config=e,this.browser=t,this.browser.isWebPushCompatible()?e.platformSettings.chrome&&("https"===e.platformSettings.chrome.domainType?"https"===function(){if(window)return"localhost"===window.location.hostname?"https":"http:"===window.location.protocol?"http":"https:"===window.location.protocol||"chrome-extension:"===window.location.protocol?"https":void 0}()?this.currentManager=new ln(e):ut.error(1,n,"Web Push does not work in http mode"):(Ye()&&new ln(e),ut.warn(1,n,"Web push settings not configured. Please configure at ",z))):this.browser.name===Et.BROWSER_NAMES.SAFARI&&e.platformSettings.safari&&"safari"in window&&"pushNotification"in window.safari&&(this.currentManager=null,ut.warn(1,n,"Web push is only supported on Safari 16 and above."))}showHardAsk(){const e=dn.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((i=>{null!=this.currentManager?i===Zt.PROMPT?this.currentManager.showHardAsk().then((n=>{n.state===Zt.DISMISSED?(Qt.track(m),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_DISMISSED}),$t.deprecatedSdkCallback("opt_in_dismissed"),sn.runCallbacks(U.HARD_ASK_DISMISSED),ut.log(1,e,"Hard ask was dismissed")):n.state===Zt.GRANTED?(Qt.track(h),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_ALLOWED,data:n.subscriptionDetails}),$t.deprecatedSdkCallback("opt_in_allowed"),sn.runCallbacks(U.HARD_ASK_ALLOWED),ut.log(1,e,"Push permission was granted"),ut.customLabel(1,e,"token",n.subscriptionDetails.token)):n.state===Zt.DENIED&&(Qt.track(f),Qt.track("Web Push Opt-in Denied"),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_DENIED}),$t.deprecatedSdkCallback("opt_in_blocked"),sn.runCallbacks(U.HARD_ASK_DENIED),ut.log(1,e,"Notification permission was denied")),t(n)})).catch((n=>{ut.error(1,e,"Error showing hard ask:",n),t({state:i,subscriptionDetails:null})})):(ut.log(1,e,"Not showing Hard Ask as current permission state is",i),this.getPushTokenDetails().then((n=>{ut.customLabel(1,e,"token",n.token),t({state:i,subscriptionDetails:n})})).catch((n=>{ut.warn(1,e,"Could not get push token details"),t({state:i,subscriptionDetails:null})}))):(ut.log(1,e,"MoEngage web push settings not configured. Please configure at",z),n(H))})).catch((e=>{n(e)}))}))}getCurrentPermissionState(){return null!=this.currentManager?this.currentManager.getCurrentPermissionState():Promise.reject(cn)}getPushTokenDetails(){return null!=this.currentManager?this.currentManager.getPushTokenDetails():Promise.reject(cn)}removeToken(){return null!=this.currentManager?this.currentManager.removeToken():Promise.reject(cn)}showNotification(e){var t=dn.baseLogTag+".showNotification";if(null!=this.currentManager)return this.currentManager.showNotification(e);ut.warn(1,t,cn)}}dn.baseLogTag="NotificationManager";class gn{constructor(e){this.mainDivs=[],this.config=e}showSoftAsk(){const e=gn.baseLogTag+".showSoftAsk";return new Promise(((t,n)=>{let i=this.config.optInConfig.loadTime;Et.getInstance().then((n=>{(this.config.optInConfig.type===Nt.TYPE.SELF_HANDLED||n.isSafari()&&this.config.optInConfig.type===Nt.TYPE.ONE_CLICK)&&(i=0),i&&ut.log(1,e,"Delay of",i," second(s) requested before opt-in flow"),setTimeout((()=>{!n.isWebPushCompatible()||this.config.optInConfig.type!==Nt.TYPE.TWO_STEP&&this.config.optInConfig.type!==Nt.TYPE.SELF_HANDLED?(We.set(r.SOFT_ASK_STATUS,en.NOT_SHOWN),t({showHardAsk:!0,softAskState:en.NOT_SHOWN})):this.showOptIn((()=>{ut.log(1,e,"Soft ask was shown"),We.set(r.OPT_IN_SHOWN_TIME,Date.now()),We.set(r.SOFT_ASK_STATUS,en.SHOWN),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_SHOWN}),$t.deprecatedSdkCallback("soft_ask_shown"),sn.runCallbacks(U.SOFT_ASK_SHOWN)}),(()=>{Qt.track(u),this.hideOptIn(),ut.log(1,e,"Soft ask was allowed"),We.set(r.SOFT_ASK_STATUS,en.ALLOWED),t({showHardAsk:!0,softAskState:en.ALLOWED}),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_ALLOWED}),$t.deprecatedSdkCallback("soft_ask_allowed"),sn.runCallbacks(U.SOFT_ASK_ALLOWED)}),(()=>{this.hideOptIn(),Qt.track(g),ut.log(1,e,"Soft ask was dismissed"),We.set(r.SOFT_ASK_STATUS,en.DISMISSED),t({showHardAsk:!1,softAskState:en.DISMISSED}),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_DISMISSED}),$t.deprecatedSdkCallback("soft_ask_closed"),sn.runCallbacks(U.SOFT_ASK_DISMISSED)}),(e=>{e=!!e,this.hideOptIn(),t({showHardAsk:e,softAskState:en.NOT_SHOWN})}))}),1e3*i)}))}))}showOptIn(e,t,n,i){const a=gn.baseLogTag+".showOptIn";if(this.config.optInConfig.type===Nt.TYPE.TWO_STEP){let r=document.getElementById("moe-push-div");null==r&&(r=document.createElement("div"),r.id="moe-push-div",r.className="moe-push-class"),Et.getInstance().then((o=>{let s=null;if(s=(o.isMobile?this.config.optInConfig.softAskConfig.mobile:this.config.optInConfig.softAskConfig.desktop).customHTML,null!=s){r.innerHTML=s;const o=document.body.firstChild;o.parentNode.insertBefore(r,o),this.moeDiv=r;const l=document.getElementById("optInText")||document.getElementById("optInTextConventional"),c=document.getElementById("moe-dontallow_button");null==l?(ut.error(1,a,"Error showing soft ask. Allow button id is missing"),i()):(e(),Qt.track(d),l.onclick=()=>{t()},c?c.onclick=()=>{n()}:window.moeRemoveBanner=()=>{n()})}else ut.error(1,a,"Error displaying soft ask"),i()}))}else if(this.config.optInConfig.type===Nt.TYPE.SELF_HANDLED){var r=Be.get();if(r.customSoftAsk){var o=document.getElementsByClassName(r.customSoftAsk.mainClass),s=document.getElementsByClassName(r.customSoftAsk.allowClass),l=document.getElementsByClassName(r.customSoftAsk.dismissClass);if(o.length<1)ut.error(1,a,"Could not find main class for the soft ask. Class name given:",r.customSoftAsk.mainClass),Et.getInstance().then((e=>{e.isWebPushCompatible()&&(ut.warn(1,a,"Proceeding to hard ask directly"),i(!0))}));else{e(),s.length<1&&(ut.warn(1,a,"Could not find any element for allow button. Class name given:",r.customSoftAsk.allowClass),ut.warn(1,a,"Docs for self-handled opt in available here - ",Y.SELF_HANDLED_DOCS)),l.length<1&&ut.warn(1,a,"Could not find any element for dismiss button. Class name given:",r.customSoftAsk.dismissClass);for(let e=o.length-1;0<=e;e--){const t=o[e];this.mainDivs.push(t),t.style.display="block"}for(let e=s.length-1;0<=e;e--)s[e].onclick=()=>{t()};for(let e=l.length-1;0<=e;e--)l[e].onclick=()=>{n()}}}else Et.getInstance().then((e=>{e.isWebPushCompatible()?(ut.warn(1,a,"No soft ask configured. Proceeding to hard ask directly. \n\nYou can ignore this message if you do not want any soft ask."),i(!0)):(ut.error(1,a,"Soft ask needs to be present in case of http implementation. Can not show hard ask otherwise."),i())}))}}hideOptIn(){null!=this.moeDiv&&(this.moeDiv.style.display="none"),0{e.style.display="none"}))}}gn.baseLogTag="SoftAskManager",(Ji=en=en||{}).SHOWN="shown",Ji.NOT_SHOWN="not shown",Ji.ALLOWED="allowed",Ji.DISMISSED="dismissed";class un{constructor(e){this.deviceToLogout=Te(e,"deviceToLogout",null)}static get(){return new un(We.get(r.GRACEFUL_DATA))}save(){We.set(r.GRACEFUL_DATA,this)}}class pn{onWindowVisibilityChange(e){pn.baseLogTag,Ie.set("isWindowActive",!0),document.addEventListener("focus",(()=>{t(!0)}),!1),document.addEventListener("blur",(()=>{t(!1)}),!1),window.addEventListener("focus",(()=>{t(!0)}),!1),window.addEventListener("blur",(()=>{"IFRAME"!==document.activeElement.tagName&&t(!1)}),!1);const t=e=>"boolean"==typeof e?n(e?"visible":"hidden"):document.hidden?n("hidden"):n("visible"),n=t=>{Ie.set("isWindowActive","visible"===t),e(t)};window.addEventListener("visibilitychange",t,!1)}static beforeUnload(){pn.isBatchingEnabled&&(Kt.windowClosed=!0,zt.sendBeacon()),window.Moengage.onsite&&window.Moengage.onsite.sendDelayCampaignStats&&window.Moengage.onsite.sendDelayCampaignStats()}static removeBeforeUnloadListeners(){window.removeEventListener("beforeunload",pn.beforeUnload,!1)}static addBeforeUnloadListeners(e){e.configs.isBatchingEnabled&&(pn.isBatchingEnabled=!0),window.addEventListener("beforeunload",pn.beforeUnload,!1)}}pn.baseLogTag="WindowEventManager",pn.isBatchingEnabled=!1;var hn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const mn="MoEngage.user";class fn{static addAttribute(e,t){const n=mn+".addUserAttribute";return new Promise(((i,a)=>{let r=!1;if("string"!=typeof e||null==e)ut.error(1,n,"Attribute name needs to be a string"),i({error:5e3,message:"Attribute name needs to be a string. Type provided was "+typeof e});else if(""===e)ut.error(1,n,"Attribute name can not be an empty string"),i({error:5001,message:"Attribute name can not be an empty string"});else if(null==t)ut.error(1,n,"Attribute value null"),i({error:5003,message:"Attribute value was empty"});else if("string"==typeof t&&""===t)ut.error(1,n,"Attribute value needs to be non-empty string or non-empty object"),i({error:5004,message:"Attribute value needs to be non-empty string or non-empty object"});else if(tt(t)&&M.includes(e))ut.error(1,n,`Value of '${e}' attribute cannot be an object`),i({error:5002,message:"Attribute value cannot be an object"});else if("object"==typeof t&&Array.isArray(t)&&!t.length)ut.error(1,n,"Attribute value needs to be non-empty string or non-empty object"),i({error:5006,message:"Attribute value needs to be non-empty string or non-empty object"});else if(tt(t)&&!Object.keys(t).length)ut.error(1,n,"Attribute value cannot be empty object"),i({error:5005,message:"Attribute value cannot be empty object"});else{const a=new yt(e,t),o=()=>{It.get().then((e=>{e.addAttribute(a).then((e=>{e?("id"===a.key&&ut.log(1,n,"Logging in the user with id: ",a.value),Jt.createUserAttributeEvent(a).then((e=>{ut.log(2,n,"Event to be converted to report:",e),Xt.addEvent(e),nn.collectGetParams().then((t=>{t=new Dt(Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE,t,e),nn.reportAdd(t).then((()=>{r&&$i.onsite.refresh&&$i.onsite.refresh(),i(!0)}))}))}))):(ut.error(1,n,"Attribute already present/queued. Not adding again."),i({error:5005,message:"Attribute already present/queued. Not adding again."}))}))}))};"id"===e?(r=!0,It.get().then((e=>{var a=e.indexOfAttribute("id");-1{o()})))):(function(){const e=mn+".refreshCards";nn.getWebSDKSettings().then((t=>{null!=t&&t.configs.isCardsModuleEnabled&&$i.cards&&(ut.log(1,e,"Fetching new Cards after login"),$i.cards.refreshCards())})).catch((t=>{ut.error(2,e,"Error Refreshing Cards:",t)}))}(),rt(!0),o())}))):o()}}))}static login(e){return fn.addAttribute("id",e)}static logout(e,t){const n=mn+".logout",i=e?{type:"forced",new_uid:t}:null;return function(){const e=un.get();null!=It.getSync()&&(e.deviceToLogout=It.getSync().deviceUuid,e.save())}(),new Promise((e=>{Qt.track(S,i).then((()=>hn(this,void 0,void 0,(function*(){ut.log(1,n,"Logging out now!"),yield zt.flushReports(),pn.removeBeforeUnloadListeners(),nn.getWebSDKSettings().then((t=>hn(this,void 0,void 0,(function*(){var n;t.isDomainLevelStorage&&Ue.remove(r.USER_DATA),Xt.clear(),yield Zi(),yield function(){return Vi(this,void 0,void 0,(function*(){const e="Moengage.disableCards",t=Be.get();try{nn.getWebSDKSettings().then((e=>Vi(this,void 0,void 0,(function*(){var n;if(null!=e&&e.configs.isCardsModuleEnabled&&null!==(n=t.cards)&&void 0!==n&&n.enable){const e=yield Sn.loadModule(ne.CARDS);yield e.logout(),zi=new mt}})))).catch((t=>{ut.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}catch(t){ut.error(1,e,"Error logging out from cards module:",t)}}))}(),rt(),We.logout(),yield It.logout(),We.remove(r.GRACEFUL_DATA),nn.onDeviceAdd=new mt,yield sa(),t.configs.remoteLogTracking&&(n=Be.get(),yield nn.getAndPersistWebSettings(n)),e(!0)})))).catch((t=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),e(!1)}))}))))}))}static updateUniqueId(e){const t=mn+".updateUniqueId";return new Promise((n=>{It.get().then((i=>{var a=i.indexOfAttribute(A),r=i.indexOfAttribute("oldUniqueIds");if(!(-1{fn.login(e).then((()=>{n(!0)}))}))):(ut.warn(1,t,"New id and old id are the same. Not updating the id."),n(!0))}))}))}static getAttributes(){const e=It.getSync().attributes,t={};return e.map((e=>{t[e.key]=e.value})),t}}class vn{constructor(e,t){this.notificationManager=null,this.softAskManager=null,vn.baseLogTag,this.sdkSettings=e,this.browser=t,this.softAskManager=new gn(this.sdkSettings),this.notificationManager=new dn(this.sdkSettings,t)}callWebPush(){const e=vn.baseLogTag+".callWebPush";this.isWebPushEnabled()&&this.notificationManager.getCurrentPermissionState().then((t=>{return n=this,a=function*(){var n=(n=t)=>{It.get().then((t=>{let i=!1;var a=t.getAttribute("email"),o=t.getAttribute("mobile");null===a&&null===o||(i=!0),t.deviceAdded=i,t.save().then((()=>{this.notificationManager.removeToken().then((()=>{Qt.track(E,{[me]:!1}),Qt.track(b),n===Zt.DENIED?ut.log(1,e,"Not asking for permission as current state is denied."):(We.remove(r.OPT_IN_SHOWN_TIME),this.startPushSubscription())}))}))}))};const i=yield Et.getInstance();var a=We.get(r.PUSH_TOKEN),o=t===Zt.DENIED&&!this.sdkSettings.isDomainLevelStorage;null==a&&t!==Zt.DENIED?this.startPushSubscription():null!=a&&(o||i.isSafari()&&t===Zt.PROMPT)?(ut.log(1,e,"User has removed the permission"),ut.image(1,V),i.isSafari()&&t===Zt.PROMPT&&(We.set(he,!0),t=Zt.DENIED),n(t)):o?ut.warn(1,e,"Not proceeding with push subscription as current state is denied"):null!=a&&t===Zt.GRANTED?this.browser.name===Et.BROWSER_NAMES.CHROME?Ve(this.sdkSettings.platformSettings,this.browser)?this.startPushSubscription():ut.warn(1,e,"Subscription mode is not VAPID type. Cannot subscribe to web push."):(this.startPushSubscription(),this.notificationManager.getPushTokenDetails().then((t=>{ut.customLabel(1,e,"token",t.token)}))):this.sdkSettings.isDomainLevelStorage?"granted"===Ue.get(r.HARD_ASK_STATUS)?(a=null===(a=Ue.get(r.SUBSCRIPTION_DETAILS))||void 0===a?void 0:a.domain)&&a===window.location.origin?(ut.log(1,e,"It seems that the user has unsubscribed manually. Starting push subscription.."),n(t)):ut.log(1,e,"Not showing opt-in as user subscribed to sub-domain"):this.startPushSubscription():n()},new(i=(i=void 0)||Promise)((function(e,t){function r(e){try{s(a.next(e))}catch(e){t(e)}}function o(e){try{s(a.throw(e))}catch(e){t(e)}}function s(t){var n;t.done?e(t.value):((n=t.value)instanceof i?n:new i((function(e){e(n)}))).then(r,o)}s((a=a.apply(n,[])).next())}));var n,i,a})).catch((t=>{ut.error(1,e,"Error in getting current state:",t)}))}startPushSubscription(){const e=vn.baseLogTag+".startPushSubscription",t=()=>{We.set(r.HARD_ASK_STATUS,Zt.PROMPT);const t=We.get(r.PUSH_TOKEN);this.notificationManager.showHardAsk().then((n=>{We.set(r.HARD_ASK_STATUS,n.state),n.state===Zt.GRANTED?null!=n.subscriptionDetails.token?(We.set(r.PUSH_TOKEN,n.subscriptionDetails.token),n.subscriptionDetails.domain=window.location.origin,We.set(r.SUBSCRIPTION_DETAILS,n.subscriptionDetails),n.subscriptionDetails.token&&t!==n.subscriptionDetails.token&&nn.deviceAdd().then((()=>{ut.image(1,"https://media.giphy.com/media/90F8aUepslB84/giphy.gif"),It.getSync().subscribedToOldSdk?ut.remoteLogTracking(1,"info",e,"User subscribed from older sdk, hence not sending subscription event"):(null!=t?fn.addAttribute("Web Migrated User","true"):fn.addAttribute("Web Subscription URL",location.href),Qt.track(y,{MOE_WEB_PUSH_TOKEN:n.subscriptionDetails.token,migrated_user:!!window.location.search.includes("moe_migration=true")||void 0}))})),this.sdkSettings.isDomainLevelStorage&&(Ue.set(r.SUBSCRIPTION_DETAILS,{domain:n.subscriptionDetails.domain,token:n.subscriptionDetails.token,endpoint:n.subscriptionDetails.endpoint,keys:n.subscriptionDetails.keys}),Ue.set(r.PUSH_TOKEN,n.subscriptionDetails.token))):(ut.error(1,e,"Push token was received as null."),ut.error(1,e,"Please contact MoEngage support if this troubleshooting does not solve the issue.")):n.state===Zt.DENIED&&ut.image(1,V)})).catch((t=>{ut.warn(1,e,t)}))},n=()=>{this.softAskManager?this.softAskManager.showSoftAsk().then((e=>{e.showHardAsk&&t()})):ut.log(1,e,"SoftAskManager not set.")};this.notificationManager.getCurrentPermissionState().then((i=>{if(i===Zt.GRANTED)this.sdkSettings.optInConfig.type!==Nt.TYPE.ONE_CLICK&&ut.remoteLogTracking(1,"info",e,"Skipping soft ask as browser permission is set to allow all notifications"),t();else{var a=parseInt(We.get(r.OPT_IN_SHOWN_TIME));if(We.get(r.SOFT_ASK_STATUS),We.get(r.HARD_ASK_STATUS),i=(Date.now()-a)/36e5,!a||i>this.sdkSettings.optInConfig.reappearTime)if(this.browser.name===Et.BROWSER_NAMES.SAFARI&&this.sdkSettings.optInConfig.type===Nt.TYPE.ONE_CLICK){ut.log(1,e,"1 step optin configured. In Safari 16+ and macOS 13+, the web push optin will be shown after a user click. Any delay will be ignored.");const t=()=>{window.removeEventListener("click",t),n()};window.addEventListener("click",t)}else n();else{let t,n;n=i<1?(t=Math.floor(60*i),"minute(s)"):(t=Math.floor(100*i)/100,"hour(s)"),ut.remoteLogTracking(1,"info",e,"Not showing opt in as last it was shown",t,n,"back on",new Date(a),". Reappear time is set to",this.sdkSettings.optInConfig.reappearTime,"hours."),ut.log(1,e,"You can clear localstorage to get opt-in again.")}}}))}isWebPushEnabled(){return!this.browser.isIncognito&&0<=vn.SUPPORTED_BROWSERS.indexOf(this.browser.name)&&navigator.serviceWorker&&"PushManager"in window&&"Notification"in window}getPermissionState(){return this.notificationManager.getCurrentPermissionState()}showNotification(e){this.notificationManager&&this.notificationManager.showNotification(e)}trackPushOptedDeviceAttribute(){return new Promise((e=>{var t=We.get(r.OPTED_STATUS_TRACK_TIME);t&&864e5{Sn.addScript(e.src,(()=>{var n=new(0,window[ne[e.name].windowLocation])(n=Be.get());t(n)}))}))),Sn.loadPromises[e.name]}static addScript(e,t){const n=document.createElement("script");n.setAttribute("src",e),n.onload=t,n.async=!0,document.body.appendChild(n)}}Sn.baseLogTag="ModuleManager",Sn.loadPromises={};var En=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class yn{static initialize(){return En(this,void 0,void 0,(function*(){var e;return null==yn.ready&&(yn.serviceMetaStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.SERVICE_META.NAME}),yn.campaingsMetaStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_META.NAME}),yn.pendingSecondaryEvents=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.PENDING_SECONDARY_EVENTS.NAME}),yn.pendingTimerCampaigns=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.PENDING_TIMER_CAMPAIGNS.NAME}),yn.triggeringPrimaryEvents=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.TRIGGERING_PRIMARY_EVENTS.NAME}),yn.campaingsTagsStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_TAGS.NAME}),yn.campaingsStatsStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_STATS.NAME}),yn.testCampaignStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_STATS.NAME}),yn.exitIntentCampaignStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.EXIT_INTENT_CAMPAIGN_STORE.NAME}),e=[yn.serviceMetaStore.ready(),yn.campaingsMetaStore.ready(),yn.pendingSecondaryEvents.ready(),yn.pendingTimerCampaigns.ready(),yn.triggeringPrimaryEvents.ready(),yn.campaingsTagsStore.ready(),yn.campaingsStatsStore.ready(),yn.testCampaignStore.ready(),yn.exitIntentCampaignStore.ready()],yn.ready=Promise.all(e)),yn.ready}))}static clear(){return En(this,void 0,void 0,(function*(){var e=yn.baseLogTag+".clear";try{yield yn.initialize(),yield Promise.all([yn.serviceMetaStore.clear(),yn.campaingsMetaStore.clear(),yn.campaingsTagsStore.clear(),yn.campaingsStatsStore.clear(),yn.testCampaignStore.clear(),yn.exitIntentCampaignStore.clear(),yn.pendingSecondaryEvents.clear(),yn.pendingTimerCampaigns.clear(),yn.triggeringPrimaryEvents.clear()]);var t=[yn.serviceMetaStore.ready(),yn.campaingsMetaStore.ready(),yn.campaingsTagsStore.ready(),yn.campaingsStatsStore.ready(),yn.testCampaignStore.ready(),yn.exitIntentCampaignStore.ready(),yn.pendingSecondaryEvents.clear(),yn.pendingTimerCampaigns.clear(),yn.triggeringPrimaryEvents.clear()];yn.ready=Promise.all(t)}catch(t){ut.error(1,e,"Error clearing onsite stores:",t)}return yn.ready}))}}yn.baseLogTag="MOE_ONSITE_STORES";var bn,_n,Tn,In,An,wn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Dn=(e,t,n)=>null==e.campaignId?()=>{}:()=>(yn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{clicks:Te(t,"clicks",0)+1}):{clicks:1},yn.campaingsStatsStore.setItem(e.campaignId,t)})),null==n&&(n={}),Rn().track_event(te.EVENT_NAMES[t].CLICK,Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},n),e.campaignContext))),On=(e,t,n=!1)=>null==e.campaignId?()=>{}:()=>{if(yn.initialize().then((()=>{yn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{impressions:Te(t,"impressions",0)+1,lastImpression:new Date}):{impressions:1,lastImpression:new Date},yn.campaingsStatsStore.setItem(e.campaignId,t)}))})),!n)return Rn().track_event(te.EVENT_NAMES[t].IMPRESSION,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE,templateType:e.templateType},e.campaignContext))},Cn=(e,t,n)=>{n=n?te.EVENT_NAMES[t].AUTO_DISMIS:te.EVENT_NAMES[t].DISMISS,Rn().track_event(n,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},e.campaignContext))},Pn=(e,t)=>{Rn().track_event(te.EVENT_NAMES[t].DELIVERED,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},e.campaignContext))},Rn=()=>{var e=window.moengage_object||"Moengage";return window[e]};class Nn{static isValid(e,t){return!Nn.isCampaignExpired(e)&&Nn.isCampaignActive(e)&&Nn.isUserInCampaignSegment(e)&&Nn.isCampaignWithinFC(e,t)}static isCampaignExpired(e){return(new Date).getTime()>new Date(e.expiryTime).getTime()}static isValidMessagingCampaign(e,t,n,i,a){return Nn.canCampaignBeRenderedOverExisting(e,a.length)&&Nn.hasCampaignClearedSelfDelay(e,t)&&Nn.hasCampaignClearedGlobalDelay(e,n,i)}static isCampaignActive(e){var t=Nn.baseLogTag+".isValid";return e.status===Tn.ACTIVE||(ut.warn(1,t,`Campaign ${e.campaignId} : Status is `+e.status),!1)}static isUserInCampaignSegment(e){var t=Nn.baseLogTag+".isValid";return!!e.userInSegment||(ut.warn(1,t,`Campaign ${e.campaignId} : User is not in segment`),!1)}static isCampaignWithinFC(e,t){var n=Nn.baseLogTag+".isValid";if([An.SELF_HANDLED].indexOf(e.templateType)<0){var i=Te(e,"delivery.fc_meta.count",0);if(0e.delivery.priority||!(t.delivery.prioritye.updatedTime?1:-1}}Nn.baseLogTag="CampaignUtils";const Ln=e=>wn(void 0,void 0,void 0,(function*(){var t=e.map((e=>yn.campaingsStatsStore.getItem(e.campaignId)));let n;try{n=yield Promise.all(t);const i=e.filter(((e,t)=>Nn.isValid(e,n[t])));return i.sort(Nn.comparator)}catch(t){return ut.error(1,"filterAndSortCampaigns","Error filtering and sorting campaigns: ",t),[]}}));class Mn{}Mn.REMOVE_TRAIL_CHARS=/[^\w\s]+$/gi;const kn=(e,t)=>{const n=Te(e,"triggerData.primary_condition.included_filters",null);return(null==n?void 0:n.filter_operator)===In.OR&&-1<(null==n?void 0:n.filters.findIndex((e=>e.action_name===t)))},xn=e=>wn(void 0,void 0,void 0,(function*(){var t=yield yn.exitIntentCampaignStore.getItem(e.campaignId);if(t)return t.error?t:(e.onsitePayload=t,ut.log(1,"getPrefetchedCampaign","Prefetched exit intent campaign found: "+e.campaignId),e)})),Bn=e=>wn(void 0,void 0,void 0,(function*(){try{return yield yn.campaingsMetaStore.getItem(e)}catch(e){return ut.error(2,"getCampaignById","Error getting campaign from store: ",e),null}})),Un=()=>new Promise((e=>{setTimeout((()=>wn(void 0,void 0,void 0,(function*(){const t=[];yield yn.campaingsMetaStore.iterate((e=>{t.push(e)})),e(t)}))),0)})),Fn=e=>null===(e=Te(e,"triggerData.secondary_condition.included_filters.filters"))||void 0===e?void 0:e.length,Wn=e=>"moe-onsite-campaign-"+e;class Hn{constructor(e,t,n,i){this.dataType=e,this.availableOperations=t,this.event=n,this.filter=i}validate(){return!(this.availableOperations.indexOf(this.filter.operator)<0)}checkEq(){let e=!1;return this.event.attributes.forEach((t=>{let n=t.value,i=this.filter.value;this.dataType===bn.STRING&&typeof n===bn.STRING&&(n=this.removeSpecialChars(n),i=this.removeSpecialChars(i)),t.key===this.filter.name&&(this.dataType!==bn.STRING||this.filter.case_sensitive?n===i&&(e=!0):n.toLowerCase()===i.toLowerCase()&&(e=!0))})),e}checkExists(){let e=!1;return this.event.attributes.forEach((t=>{t.key===this.filter.name&&(e=!0)})),e}removeSpecialChars(e){return e.replace(Mn.REMOVE_TRAIL_CHARS,"")}}(Ji=bn=bn||{}).BOOL="bool",Ji.STRING="string",Ji.DATE="datetime",Ji.NUMBER="double",Ji.LONG="long",Ji.ARRAY_BOOL="array_bool",Ji.ARRAY_NUMBER="array_double",Ji.ARRAY_STRING="array_string",Ji.ARRAY_DATETIME="array_datetime",Ji.OBJECT="object",(Ji=_n=_n||{}).ALLOF="all_of",Ji.ANYOFF="any_of";const Kn=["is","exists","contains","startsWith","endsWith","in","containsInTheFollowing","startsWithInTheFollowing","endsWithInTheFollowing"];class Gn extends Hn{constructor(e,t){super(bn.STRING,Kn,e,t)}evaluate(){Gn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0this.filter.case_sensitive?0<=e.value.indexOf(t):0<=e.value.toLowerCase().indexOf(t.toLowerCase());return Array.isArray(this.filter.value)?this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkStartsWith(e){var t=t=>{var n=(e,t)=>e.substr(0,t.length)===t;return this.filter.case_sensitive?n(e.value,t):n(e.value.toLowerCase(),t.toLowerCase())};return Array.isArray(this.filter.value)?this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkEndsWith(e){var t=t=>{var n=(e,t,n)=>((void 0===n||n>e.length)&&(n=e.length),e.substring(n-t.length,n)===t);if(this.filter.case_sensitive)return n(e.value,t);const i=this.removeSpecialChars(e.value),a=this.removeSpecialChars(t);return n(i.toLowerCase(),a.toLowerCase())};return Array.isArray(this.filter.value)?this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkIn(e){let t=!1;if(Array.isArray(this.filter.value))for(let n=this.filter.value.length-1;0<=n;n--)if(this.filter.case_sensitive){if(this.filter.value[n]===e.value){t=!0;break}}else if(this.filter.value[n].toLowerCase()===e.value.toLowerCase()){t=!0;break}return t}checkInTheFollowing(e){return this.filter.value.map((t=>e(t)))}}Gn.baseLogTag="StringDataType";const Vn=["is","exists"];class jn extends Hn{constructor(e,t){super(bn.BOOL,Vn,e,t)}evaluate(){let e=!1;switch(this.filter.operator){case"is":e=this.checkEq();break;case"exists":e=this.checkExists()}return this.filter.negate?!e:e}}jn.baseLogTag="BooleanDataType";const Yn=["is","exists","greaterThan","lessThan","between","in"];class zn extends Hn{constructor(e,t){super(bn.NUMBER,Yn,e,t)}evaluate(){zn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0this.filter.value}checkLessThan(e){return e.valuee.key===this.filter.name));const n=0t:e.value.setHours(0,0,0,0)t:e.value.setHours(0,0,0,0)>t.setHours(0,0,0,0)}checkLastX(e){var t=(new Date).setHours(0,0,0,0);return 0e.key===this.filter.name));return null!=(t=0Array.isArray(e))(t.value)&&(e=this.filter.array_filter_type&&this.filter.array_filter_type===_n.ANYOFF?this.checkAnyOf(t):this.checkAllOf(t)),e}checkAllOf(e){return e.value.every((t=>this.getFilterResult(t,e)))}checkAnyOf(e){return e.value.some((t=>this.getFilterResult(t,e)))}getFilterResult(e,t){let n=!1;e=this.createCustomEvent(t.key,e);const i=this.getDataType(e);return i.validate()&&(n=i.evaluate()),n}createCustomEvent(e,t){return t=new yt(e,t),new Jt(this.event.name,[t])}getDataType(e){let t;switch(this.filter.data_type){case bn.ARRAY_BOOL:t=new jn(e,this.filter);break;case bn.ARRAY_DATETIME:t=new $n(e,this.filter);break;case bn.ARRAY_NUMBER:t=new zn(e,this.filter);break;case bn.ARRAY_STRING:t=new Gn(e,this.filter)}return t}}class Qn{constructor(e,t){this.event=e,this.filter=t}evaluate(){let e;var t=this.event.attributes.filter((e=>e.key===this.filter.name));const n=0{if("exists"===e.operator){var t=(null==e?void 0:e.name)in(null==n?void 0:n.value);return e.negate?!t:t}return(null==e?void 0:e.name)in(null==n?void 0:n.value)&&(t=new yt(e.name,n.value[e.name]),t=new Jt(e.name,[t]),Zn.doesEventMatchFilters(t,e))})),a=this.filter.filter_operator;e=(null==i?void 0:i[0])||!1;for(let t=1;tt.action_name===e||t.action_name===_&&"MOE_EXIT"===e))}static areFiltersAbsent(e){return!(null==e||!e.action_name||null!==(e=null==e?void 0:e.attributes)&&void 0!==e&&e.filters)}static getFilters(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filters)||null}static getFilterOperator(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filterOperator)||In.AND}static isTriggered(e,t,n,i){let a=!0;if(0<(null==t?void 0:t.length)){let o;o=i||ei.getFilterOperator(n);var r=t.map((t=>Zn.doesEventMatchFilters(e,t)));a=r[0]||!1;for(let e=1;ee.action_name===I));return e=ei.getFilters(i),ei.isTriggered(t,e,i)}return!0}}ei.baseLogTag="OnsiteCampaignMeta";class ti{constructor(e){this.cs_id=e.cs_id,this._id=e._id,this.references=e.references,this.trigger_wait_time=e.trigger_wait_time||null,ii.validate(e.primary_condition)?this.primary_condition=new ii(e.primary_condition):this.primary_condition=null,ii.validate(e.secondary_condition)?this.secondary_condition=new ii(e.secondary_condition):this.secondary_condition=null,ii.validate(e.url_condition)?this.url_condition=new ii(e.url_condition):this.url_condition=null,this.description=e.description,null!=e.trigger_delay?this.trigger_delay=new ni(e.trigger_delay):this.trigger_delay=null}static validate(e){let t=!1;return["primary_condition"].forEach((n=>{null!=Te(e,n,null)&&(t=!0)})),t}}class ni{constructor(e){if(this.delay=Te(e,"delay",0),this.unit=Te(e,"unit","seconds"),this.delay_type=Te(e,"delay_type",""),this.attribute=Te(e,"attribute",""),Te(e,"delay",null)&&Te(e,"unit",null)){let e=this.delay;"minutes"!==this.unit&&"hours"!==this.unit&&"days"!==this.unit||(e*=60),"hours"!==this.unit&&"days"!==this.unit||(e*=60),"days"===this.unit&&(e*=24),this.delayInSeconds=e}else this.delayInSeconds=0}}class ii{constructor(e){this.included_filters=new ai(Te(e,"included_filters",null)),this.excluded_filters=new ai(Te(e,"excluded_filters",null))}static validate(e){return!!(e&&(e=e.included_filters)&&Array.isArray(e.filters)&&e.filters.length&&null!=e.filter_operator)}}class ai{constructor(e){this.filter_operator=Te(e,"filter_operator",In.AND),this.filters=null===(e=Te(e,"filters",[]))||void 0===e?void 0:e.map((e=>new ri(e)))}}class ri{constructor(e){const t=Te(e,"action_name",null);"string"==typeof t&&(t.includes(".")?this.action_name=ze(t):this.action_name=t);var n=Te(e,"executed",null);"boolean"==typeof n&&(this.executed=n),this.filter_type=Te(e,"filter_type",null),n=Te(e,"attributes",null),oi.validateJson(n)&&(this.attributes=new oi(n)),"nested_filters"===this.filter_type&&(this.filters=new ai(e))}}class oi{constructor(e){this.filters=[],this.filterOperator=Te(e,"filter_operator",In.AND),this.filters=Te(e,"filters",[]),this.filters.length&&this.filters.forEach((e=>{var t;null!==(t=null==e?void 0:e.name)&&void 0!==t&&t.includes(".")&&(e.name=ze(e.name))}))}static validateJson(e){if(null==e)return!1;var t=["filters"];for(let n=0;n{var a={id:(0,ft.v4)(),channel:this.channel,topic:e,message:t};this.addToListener(a,n,i),this.target instanceof HTMLIFrameElement?this.target.contentWindow.postMessage(a,this.target.src):this.target.postMessage(a,"*")}))}static listenToChannel(e,t,n){window.addEventListener("message",(i=>{i.data&&i.data.channel&&i.data.topic&&i.data.channel===e&&i.data.topic===t&&n(i.data,(n=>{n={id:i.data.id,channel:e,topic:t,message:n},i.source.postMessage(n,i.origin)}))}))}addToListener(e,t,n){gi.pendingPromises[e.id]={resolve:t,reject:n},window.addEventListener("message",(e=>{e.data&&Te(e.data,"channel",null)===this.channel&&null!=gi.pendingPromises[e.data.id]&&(gi.pendingPromises[e.data.id].resolve(e.data),delete gi.pendingPromises[e.data.id])}))}}gi.pendingPromises={};class ui{constructor(e){this.draftId=Te(e,"draft_id",null),this.draftType=Te(e,"draft_type",null),this.templateType=Te(e,"template_type",null),this.action=Te(e,"action",null);var t=Te(e,"campaign_meta",{});this.locale=Te(e,"locale",null),this.variation=Te(e,"variation",null),this.displaySettings=new di({config:t.config},this.templateType)}static isValidRawJson(e){var{draft_id:t,draft_tag:n,draft_type:e}=e;return e===te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON?null!=t&&null!=n:null!=t}}class pi{getIframe(){return null==this.iFramePromise&&(this.iFramePromise=new Promise((e=>{const t=document.createElement("iframe");t.id="moengage-web-helper-frame",t.style.display="none",t.src=te.WEB_HELPER_IFRAME_URL,document.body.appendChild(t),t.addEventListener("load",(()=>{this.helper=new gi(te.IFRAME_CHANNEL,t),e(t)}))}))),this.iFramePromise}getDraftCampaignInfo(){return e=this,n=function*(){var e="IframeHelper.getDraftCampaignInfo";try{ut.log(1,e,"Loading helper frame"),yield this.getIframe(),ut.log(1,e,"Helper frame loaded");var t=yield this.helper.sendMessage(te.IFRAME_TOPICS.COOKIE_STORAGE,{TYPE:"GET",KEY:te.COOKIE_STORAGE.TEST_DRAFT_ID});ut.log(1,e,"Data from iframe: ",t);var n=t.message;ut.log(1,e,"Raw test campaign",n);let i=null;return null!=n&&(ui.isValidRawJson(n)?i=new ui(n):ut.error(1,e,"Data is not a valid test campaign")),i}catch(e){return null}},new(t=(t=void 0)||Promise)((function(i,a){function r(e){try{s(n.next(e))}catch(e){a(e)}}function o(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var n;e.done?i(e.value):((n=e.value)instanceof t?n:new t((function(e){e(n)}))).then(r,o)}s((n=n.apply(e,[])).next())}));var e,t,n}}class hi{constructor(e){this.templateType=Te(e,"template_type",null),this.payloadType=Te(e,"payload_type",null),this.payload=Te(e,"payload",null),this.position=Te(e,"position",null),this.campaignContext=Te(e,"campaign_context",null),this.editorVersion=Te(e,"editor_version",null),this.htmlJsonPayload=JSON.parse(Te(e,"html_json_payload",null)),this.updatedTime=Xe(Te(e,"updated_time")+"Z")}}var mi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class fi{constructor(e){this.appId=e.appId,this.store=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.SERVICE_META.NAME}),this.host=e.baseDomainName}getUserSessionAttributes(){var e=function(){const e=new Date;return{day:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],hours:String(e.getHours()).padStart(2,"0")}}();const t=new vt;var n=at(window.location.search);return Object.assign(Object.assign({},n),{USER_TYPE:1{ei.isValidMetaJSON(e)&&a.push(new ei(e))})),{campaignsMeta:a,globalDelayBetweenInapps:Te(i,"min_delay_btw_inapps",0)}}catch(t){throw ut.error(1,e,"Error getting meta for inapp: ",t),new Error("Could not get meta payload")}}))}getCampaignPayload(e,t){return mi(this,void 0,void 0,(function*(){var n=fi.baseLogTag+".getCampaignPayload";let i;try{const n={contexts:["string"],campaign_context:e.campaignContext,user_session_attributes:this.getUserSessionAttributes()};if(t){const a={};for(let e=0;e{n.push(new hi(e))})),n}catch(i){throw ut.error(1,n,"Error geting payload",i),new Error("Could not get payload for "+e)}}))}getDraftCampaign(e){return mi(this,void 0,void 0,(function*(){var t=fi.baseLogTag+".getDraftCampaign";try{const t=yield this.getRequestOptions();t.queryParams=Object.assign({},t.queryParams,{locale:e.locale,variation:e.variation});var n=yield ht.post(this.host+te.API.DRAFT_CAMPAIGN_PAYLOAD+e.draftId,t);const i=JSON.parse(n.responseText);return"JSON"===i.payload_type&&(i.payload=JSON.parse(i.payload)),new hi(i)}catch(n){return ut.error(1,t,"Error geting test campaign payload",n),null}}))}getRequestOptions(e={}){const t=Qe();return nn.getWebSDKSettings().then((n=>{var i=We.get(r.USER_DATA);let a;const{deviceUuid:o,attributes:s}=i;if(s.map((e=>{e.key===A&&(a=null===(e=null==e?void 0:e.value)||void 0===e?void 0:e.toString())})),!o)throw new Error("device_unique_id not found in localStorage.");var l=qe()?"mweb":"web";return i=Je(),{headers:{"Content-Type":"application/json","MOE-APPKEY":this.appId},queryParams:Object.assign({sdk_ver:t.getSdkVersion(),unique_id:o,os:l},i),postData:Object.assign(Object.assign({},e),{uid:a})}})).catch((e=>{throw new Error("Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}sendDeliveryFunnelStats(e,t){return mi(this,void 0,void 0,(function*(){const n=fi.baseLogTag+".sendDeliveryFunnelStats";try{var i=yield this.getRequestOptions(null);return ht.post(this.host+te.API.STATS,Object.assign(Object.assign({},i),{headers:Object.assign(Object.assign({},i.headers),{"MOE-INAPP-BATCH-ID":t}),postData:Object.assign(Object.assign({},i.postData),{deliveryStats:e})})).then((()=>{ut.log(1,n,"Delivery Funnel stats sent to Moengage: ",e)})).catch((e=>{ut.warn(1,n,"Error sending campaign stats: ",e)}))}catch(i){ut.warn(1,n,"Error sending campaign stats: ",i)}}))}sendBeacon(e,t){this.getRequestOptions().then((t=>{var n=this.host+te.API.STATS;t.queryParams.app_id=t.headers["MOE-APPKEY"],delete t.queryParams.uid,n=ot(n,t.queryParams),ut.log(1,"OnsiteApi.sendBeacon","[sendBeacon] payload: "+JSON.stringify(e)),t=new Blob([JSON.stringify(e)],{type:"text/plain;charset=UTF-8"}),navigator.sendBeacon(n,t)}))}}fi.baseLogTag="OnsiteApi";class vi{constructor(){this.isExitIntentShown=!1,this.isPopStateEventBound=!1}onScroll(e){const t=vi.baseLogTag+".onScroll";null==e&&(e=()=>{});var n=vi.throttle((()=>{ut.remoteLogTracking(1,"info",t,"Scrolled percent:",vi.getScrollPercent()),e(vi.getScrollPercent())}),te.SCROLL_CAMPAIGN_THROTTLING_TIME);return e(vi.getScrollPercent()),window.addEventListener("scroll",n),n}onMobileTabChange(e){const t=vi.baseLogTag+".onMobileTabChange";document.addEventListener("visibilitychange",(()=>{this.isExitIntentShown||"hidden"!==document.visibilityState||(ut.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0)}))}onMobileBackHit(e){const t=vi.baseLogTag+".onMobileBackHit";setTimeout((()=>{this.isPopStateEventBound=!0,window.addEventListener("popstate",(n=>{!this.isExitIntentShown&&n.state&&"exit_intent"===n.state.moeIntent&&(ut.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e("onBackClick"),this.isExitIntentShown=!0)}))}),1e3),this.setHistoryState()}setHistoryState(){window.history.state&&"no_intent"===window.history.state.moeIntent||(window.history.replaceState(Object.assign(Object.assign({},window.history.state),{moeIntent:"exit_intent"}),""),window.history.pushState(Object.assign(Object.assign({},window.history.state),{moeIntent:"no_intent"}),""))}onMobileScrollAndExit(e){const t=vi.baseLogTag+".onMobileScrollAndExit",n=document.documentElement.offsetHeight;let i,a=vi.getScrollY();0{let r=a-vi.getScrollY();r<0&&(r=0,a=vi.getScrollY()),i=vi.getScrollPercent()>te.EXIT_INTENT.CONFIG.SCROLL_DOWN_THRESHOLD,i&&r/n>te.EXIT_INTENT.CONFIG.SCROLL_UP_THRESHOLD/100&&(clearInterval(this.scrollExitIntentInterval),this.scrollExitIntentInterval=null,this.isExitIntentShown||(ut.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0))}),te.EXIT_INTENT.CONFIG.SCROLL_INTERVAL))}mobileExitIntent(e){this.onMobileScrollAndExit(e),this.onMobileBackHit(e),this.onMobileTabChange(e)}onExit(e){const t=vi.baseLogTag+".onExit";qe()?this.mobileExitIntent(e):(this.exitIntentListener=n=>{return i=this,r=function*(){var i=window.innerWidth,a=window.innerHeight;(n.clientY<0||n.clientX<0||n.clientY>=a||n.clientX>=i)&&(ut.log(1,t,"TRIGGERED: EXIT INTENT"),e())},new(a=(a=void 0)||Promise)((function(e,t){function n(e){try{s(r.next(e))}catch(e){t(e)}}function o(e){try{s(r.throw(e))}catch(e){t(e)}}function s(t){var i;t.done?e(t.value):((i=t.value)instanceof a?i:new a((function(e){e(i)}))).then(n,o)}s((r=r.apply(i,[])).next())}));var i,a,r},document.addEventListener("mouseout",this.exitIntentListener,!1))}static getScrollPercent(){const e=window,t=document,n=t.documentElement,i=t.getElementsByTagName("body")[0],a=e.innerHeight||n.clientHeight||i.clientHeight;var r=document.body,o=document.documentElement;return a<(o=Math.max(r.scrollHeight,r.offsetHeight,o.clientHeight,o.scrollHeight,o.offsetHeight))?100*vi.getScrollY()/(o-a):100}static getScrollY(){let e=0;return"number"==typeof window.pageYOffset?e=window.pageYOffset:document.body&&document.body.scrollTop&&(e=document.body.scrollTop),e}static throttle(e,t){let n;return(...i)=>{n=n||window.setTimeout((()=>{n=null,e.apply(null,i)}),t)}}}vi.baseLogTag="WindowEventManager";var Si=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Ei{static getPendingSecondaryEventCampaign(e){return Si(this,void 0,void 0,(function*(){return yield yn.pendingSecondaryEvents.getItem(e)}))}static setPendingSecondaryEventCampaign(e,t){return Si(this,void 0,void 0,(function*(){yield yn.pendingSecondaryEvents.setItem(e,t)}))}static removePendingSecondaryEventCampaign(e){return Si(this,void 0,void 0,(function*(){yield yn.pendingSecondaryEvents.removeItem(e)}))}static getPendingSecondaryEventKeys(){return Si(this,void 0,void 0,(function*(){return yield yn.pendingSecondaryEvents.keys()}))}static getPendingTimerCampaign(e){return Si(this,void 0,void 0,(function*(){return yield yn.pendingTimerCampaigns.getItem(e)}))}static setPendingTimerCampaign(e,t){return Si(this,void 0,void 0,(function*(){yield yn.pendingTimerCampaigns.setItem(e,t)}))}static removePendingTimerCampaign(e){return Si(this,void 0,void 0,(function*(){yield yn.pendingTimerCampaigns.removeItem(e)}))}static getPendingTimerKeys(){return Si(this,void 0,void 0,(function*(){return yield yn.pendingTimerCampaigns.keys()}))}static getTriggeringPrimaryEvent(e){return Si(this,void 0,void 0,(function*(){return yield yn.triggeringPrimaryEvents.getItem(e)}))}static setTriggeringPrimaryEvent(e,t){return Si(this,void 0,void 0,(function*(){yield yn.triggeringPrimaryEvents.setItem(e,t)}))}static removeTriggeringPrimaryEvent(e){return Si(this,void 0,void 0,(function*(){yield yn.triggeringPrimaryEvents.removeItem(e)}))}static getTriggeringPrimaryEventKeys(){return Si(this,void 0,void 0,(function*(){return yield yn.triggeringPrimaryEvents.keys()}))}static removeCampaignFromStores(e){return Si(this,void 0,void 0,(function*(){yield Ei.removePendingSecondaryEventCampaign(e),yield Ei.removePendingTimerCampaign(e)}))}}var yi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class bi{static setListener(e){this.listener=e}static destroy(){this.listener=null,this.deliveryStats=null}static setDeliveryStats(e){this.deliveryStats=e}static createNewTimers(){return yi(this,void 0,void 0,(function*(){var e=this.baseLogTag+".createNewTimers",t=yield Ei.getPendingTimerKeys();for(let a=0;ayi(this,void 0,void 0,(function*(){yield this.checkAndInvokeListener(e),yield Ei.removeCampaignFromStores(e)}))),t);n={startTime:Date.now(),timerId:n,timer:t},yield Ei.setPendingTimerCampaign(e,n)}))}static checkAndInvokeListener(e){return yi(this,void 0,void 0,(function*(){var t=this.baseLogTag+".checkAndInvokeListener",n=yield Bn(e);null!=n&&n.campaignId&&((yield this.isSatisfyingEventsArray(e))?ei.getURLFilterResult(n)&&(ut.log(1,t,`Campaign ${e} satisfies the secondary_condition and the url_condition after timer has elapsed`),this.closeProximityTimerCampaigns.push(n),this.closeProximityCampaignsTimeout||(this.closeProximityCampaignsTimeout=setTimeout((()=>{this.listener(this.closeProximityTimerCampaigns),this.closeProximityTimerCampaigns=[],this.closeProximityCampaignsTimeout=null}),500))):(ut.warn(1,t,`Campaign: ${e} does not satisfy secondary_condition after its timer has elapsed. Removing its entry from secondary stores`),this.deliveryStats.setStats(n,te.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED),this.deliveryStats.setStats(n,te.DELIVERY_FUNNEL.EVALUATION.CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED),this.deliveryStats.sendDeliveryStats([n])))}))}static checkIfPendingAction(e,t){return t===In.AND&&!e.events.some((e=>1===e.filters.length&&!e.filters[0].executed))}static isSatisfyingEventsArray(e){return yi(this,void 0,void 0,(function*(){var t=yield Ei.getPendingSecondaryEventCampaign(e);if(null!=t&&t.events){if(!t.events.length)return!0;var n=t.operator;for(let e=0;e=r.timer&&(yield this.isSatisfyingEventsArray(a))&&null!=(r=yield Bn(a))&&r.campaignId&&(ut.warn(1,e,`Campaign: ${a} contained 'has not executed' event(s) and had satisfied secondary_condition, but the website was closed when the timer elapsed`),i.push(r),yield this.deleteTimerAndRemoveFromStores(a))}this.sendUserNotOnAppStat(i)}))}static sendUserNotOnAppStat(e){for(let n=0;n{if("nested_filters"===e.filter_type){const t={operator:e.filters.filter_operator,filters:[]};e.filters.filters.forEach((e=>{t.filters.push(e),!1===e.executed&&(i=!0)})),n.events.push(t)}else{var t={operator:n.operator===In.AND?In.OR:In.AND,filters:[e]};n.events.push(t),!1===e.executed&&(i=!0)}})),n.updated_time=Date.now(),n.time_left=1e3*e.triggerData.trigger_wait_time.wait_period,{campaignEntry:n,isCampaignTimerSet:i}}static pruneRemovedCampaigns(){return _i(this,void 0,void 0,(function*(){var e=this.baseLogTag+".pruneRemovedCampaigns";const t=(yield Un()).map((e=>e.campaignId));var n=yield Ei.getPendingSecondaryEventKeys();for(let a=0;ae.toBeRemoved)))||(ut.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s))):d===In.AND&&(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(r.toBeRemoved=!0,(c===In.OR||c===In.AND&&h.events.every((e=>e.toBeRemoved)))&&(ut.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s)))):d===In.OR?(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(c===In.AND||c===In.OR&&1===h.events.length?(ut.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s)):r.toBeRemoved=!0)):d===In.AND&&(r.toBeRemoved=!0,1===h.events.length&&h.events[0].toBeRemoved&&c===In.OR&&(ut.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s))))}}a.includes(s)||i.includes(s)||(yield this.updatePendingSecondaryEvents(s,h))}}return this.sendPathTimeExpiredStat(r),yield this.clearCampaignsData(a),yield this.clearCampaignsData(i),i}))}static sendPathTimeExpiredStat(e){for(let n=0;n!e.toBeRemoved));for(let e=0;e!e.toBeRemoved))}yield Ei.setPendingSecondaryEventCampaign(e,t)}))}static clearCampaignsData(e){return _i(this,void 0,void 0,(function*(){for(let t=0;t_i(this,void 0,void 0,(function*(){n.includes(t)||(ut.warn(1,e,`Campaign: ${t} does not exist in pendingSecondaryEvents store but exists in triggeringPrimaryEvents store. Removing it from triggeringPrimaryEvents store`),yield Ei.removeTriggeringPrimaryEvent(t))}))))}))}}Ti.baseLogTag="SecondaryEventsManager",Ti.deliveryStats=null;var Ii=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Ai{constructor(e){this.primaryEventsHash={},this.secondaryEventsHash={},this.messagingCampaigns=[],this.scrollCampaigns=[],this.scrollCampaignTriggered=!1,this.exitIntentCampaigns=[],this.exitCampaignTriggered=!1,this.listener=null,this.historyManager=window[ee],this.onEvent=e=>Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".onEvent";try{null!=this.primaryEventsHash[e.name]&&(yield this.handlePrimaryEvent(e)),null!=this.secondaryEventsHash[e.name]&&(yield this.handleSecondaryEvent(e))}catch(e){ut.error(1,t,"Error occurred during check event trigger campaigns: ",e)}})),this.onScroll=e=>Ii(this,void 0,void 0,(function*(){const t=Ai.baseLogTag+".onScroll";try{if(this.scrollCampaigns&&0Ii(this,void 0,void 0,(function*(){var i,a=null===(i=null===(a=null===(i=null===(a=null===(i=null==n?void 0:n.triggerData)||void 0===i?void 0:i.primary_condition)||void 0===a?void 0:a.included_filters)||void 0===i?void 0:i.filters[0])||void 0===a?void 0:a.attributes)||void 0===i?void 0:i.filters[0];a&&(i=new yt(a.name,a.value),i=yield Jt.createEvent(T,[i]),ei.getFilterResult(i,n)&&e>a.value&&!this.scrollCampaignTriggered&&(this.scrollCampaignTriggered=!0,window.removeEventListener("scroll",this.scrollListenerCallback),ut.log(1,t,"Triggered Scroll campaign"),this.trigger([n],i)))}))))}}catch(n){ut.error(1,t,"Error occurred in triggering scroll campaigns ",n)}})),this.onExit=e=>Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".onExit";try{if(0ei.getFilterResult(i,e)));n.length?(ut.log(1,t,"Triggered Exit Intent campaign: ",n),this.trigger(n,i)):("onBackClick"===e&&window.history.back(),ut.log(1,t,"No Exit Intent campaign is eligible."))}}catch(n){ut.error(1,t,"Error occurred in triggering exit intent campaigns ",n)}})),this.messagingCampaigns=e,this.windowEventManager=new vi}onTrigger(e){this.listener=e}handlePrimaryEvent(e){return Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".handlePrimaryEvent",n=this.primaryEventsHash[e.name];const i=[],a=[];for(let e=0;eei.didPrimaryEventFilterTrigger(e,t)));o.length&&(yield Ti.createPendingSecondaryEvents(o,e)),o=a.filter((t=>ei.getFilterResult(e,t))),o.length&&(ut.log(1,t,`Campaigns triggered for event ${e.name}: `+o.length),this.trigger(o,e))}))}handleSecondaryEvent(e){return Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".handleSecondaryEvent",n=yield Ti.updatePendingSecondaryEventsHistory(e,this.secondaryEventsHash[e.name]);let i=[];for(let e=0;eei.getURLFilterResult(e))),i.length&&(ut.log(1,t,`Campaigns triggered by secondary event "${e.name}": `+i.length),this.trigger(i))}))}getCampaignsFromHash(e){return Ii(this,void 0,void 0,(function*(){const t=[];var n=this.primaryEventsHash[e];if(null!=n&&n.length)for(let e=0;e{this.addEntryInEventsHash(this.primaryEventsHash,t.action_name,e.campaignId)}))}createSecondaryEventsHash(e){const t=Te(e,"triggerData.secondary_condition.included_filters.filters",[]);null!=t&&t.forEach((t=>{"nested_filters"===t.filter_type?t.filters.filters.forEach((t=>{this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)})):this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)}))}startWatching(){return Ii(this,void 0,void 0,(function*(){Ai.baseLogTag,this.messagingCampaigns.forEach((e=>{this.createPrimaryEventsHash(e),this.createSecondaryEventsHash(e)})),this.historyManager&&(this.historyManager.getHistory().forEach(this.onEvent),this.historyManager.addEventListener(this.onEvent)),this.scrollCampaignTriggered=!1,this.scrollCampaigns=this.messagingCampaigns.filter((e=>kn(e,T))),0kn(e,_))),0this.active,this.campaignMeta=e,this.data=t,this.active=!1,this.campaignRendered=!1;const n=Te(e,"triggerData.trigger_delay.delayInSeconds",0)||0;this.waitForDelay=new Promise((e=>{this.delayTimer=setTimeout((()=>{this.campaignRendered=!0,e()}),1e3*n)}))}setIsActive(e){this.active=e}}const Di={CENTER:{position:"absolute",top:"50%",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, -50%)"},CENTER_LEFT:{position:"absolute",top:"50%",left:"10px",bottom:"auto",right:"auto",transform:"translate(0,-50%)"},CENTER_RIGHT:{position:"absolute",top:"50%",right:"10px",bottom:"auto",left:"auto",transform:"translate(0,-50%)"},TOP_LEFT:{position:"absolute",top:"10px",left:"10px",bottom:"auto",right:"auto"},TOP_CENTER:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},TOP_RIGHT:{position:"absolute",top:"10px",right:"10px",bottom:"auto",left:"auto"},BOTTOM_LEFT:{position:"absolute",bottom:"10px",left:"10px",top:"auto",right:"auto"},BOTTOM_CENTER:{position:"absolute",left:"50%",bottom:"10px",top:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM_RIGHT:{position:"absolute",bottom:"10px",right:"10px",top:"auto",left:"auto"},TOP:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM:{position:"absolute",bottom:"0",top:"auto",right:"auto",left:"50%",transform:"translate(-50%, 0)"},LEFT:{position:"absolute",left:"0",bottom:"auto",right:"auto",top:"auto"},RIGHT:{position:"absolute",right:"0",bottom:"auto",left:"auto",top:"auto"}},Oi=e=>{try{return!Ci()&&window.Moengage.onsite.displayManager.campaignRenderMap[e].campaignMeta}catch(t){ut.error(1,"OsmFunctions.getCampaignMeta","Campaign meta not found: "+e)}},Ci=()=>!!window.Moengage.onsite.displayManager.testCampaign&&(ut.log(1,"OsmFunctions.isTestCampaign","Test campaign element. No data will be sent to BE right now. We'll start tracking events once the campaign is live"),!0);var Pi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};function Ri(e,t,n,i,a){return Pi(this,void 0,void 0,(function*(){const r=Wn(t),o=/moe-campaign-id/g;yield Pi(this,void 0,void 0,(function*(){try{let d=e.root;const{styles:g,scripts:u}=e,p=document.createElement("div");p.id=r,n.parentNode.insertBefore(p,n);const h=document.querySelector("#"+r),m=new DOMParser;d=d.replace(o,t);var s=m.parseFromString(d,"text/html");yield function(e){return Pi(this,void 0,void 0,(function*(){try{const t=e.getElementsByTagName("a");for(let e=t.length-1;0<=e;e--)""===t[e].getAttribute("href")&&t[e].removeAttribute("href")}catch(e){ut.error(2,"InsertCustomHtmlJs.removeEmptyHrefTags","Error while removing Empty href attributes",e)}}))}(s),function(e){try{["trackEvent","trackClick","trackDismiss","dismissMessage","leadGenFormSubmit","fetchRatingValue"].forEach((n=>{!function(e,n){e.querySelectorAll("[onclick]").forEach((e=>{var i=e.getAttribute("onclick").replace(new RegExp(n+"\\((.*?)\\)","g"),((e,i)=>i?n+`('${t}',${i})`:n+`('${t}')`));e.setAttribute("onclick",i)}))}(e,n)}))}catch(e){ut.error(2,"InsertCustomHtmlJs.addCampaignId","Error while adding Campaign Id",e)}}(s);const f=g.map((e=>m.parseFromString(e,"text/html").head.childNodes[0]));var l=u.map((e=>(e=e.replace(o,t),m.parseFromString(e,"text/html").head.childNodes[0]))),c=f.map((e=>new Promise(((t,n)=>{!function(e){const{node:t,onLoad:n,onError:i}=e;t instanceof HTMLMetaElement||"dns-prefetch"===t.getAttribute("rel")?n():(t.onload=()=>n(),t.onerror=()=>i()),document.querySelector("#"+r).appendChild(t)}({node:e,onLoad:t,onError:n})}))));yield Promise.all(c).catch((e=>{ut.warn(1,"InsertCustomHtmlJs","Error loading Styles",(null==e?void 0:e.message)||"")}));const v=s.body.childNodes[0];h.appendChild(v),[...v.querySelectorAll(".brz-embed-code script")].map((e=>{!function(e){const t=document.createElement("script");t.innerHTML=e.innerHTML;for(let a=0;a{const a=document.createElement("script");for(let n=0;n{window.Brz.emit("init.dom",window.jQuery(v)),ut.log(1,"InsertCustomHtmlJs","Custom HTML/JS DOM Level OSM Insertion: "+r),a&&a(i,"OSM")()})).catch((e=>{ut.warn(1,"InsertCustomHtmlJs","Error loading script",(null==e?void 0:e.message)||"")}))}catch(e){ut.error(2,"InsertCustomHtmlJs","Failed to Insert OSM into DOM: "+r)}}))}))}var Ni=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Li{constructor(){this.renderListener=null,this.initializationPromiseObject=null,this.campaignRenderOrder=[],this.campaignRenderMap={},this.dismissTestInapp=e=>{this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"),this.removeOSMPusher(),this.pushCardsTemplate(0),setTimeout((()=>{var t;return null===(t=document.getElementById("moe-onsite-campaign-"+e))||void 0===t?void 0:t.remove()}),0)},this.dismissInapp=e=>{if(0!==this.getActiveCampaigns().length){const t=this.getActiveCampaigns();setTimeout((()=>{t.forEach((t=>{var n;t.campaignMeta.campaignId===e&&(t.iframe?null!==(n=t.iframe)&&void 0!==n&&n.remove():null!==(t=t.osmDivSelector)&&void 0!==t&&t.remove())}))}),0),this.campaignRenderMap[e].setIsActive(!1),this.campaignRenderOrder=this.campaignRenderOrder.filter((t=>t!==e)),clearInterval(this.campaignRenderMap[e].dismissInterval),this.campaignRenderMap[e].delayTimer=null,this.renderAllActiveCampaigns()}else this.dismissTestInapp(e)},this.clickTracker=Dn,this.dismissEvent=Cn,this.startInitialization(),this.initialInlineBodyStyle=document.body.getAttribute("style")}startInitialization(){return Ni(this,void 0,void 0,(function*(){var e=Li.baseLogTag+".startInitialization";try{null==this.initializationPromiseObject&&(this.initializationPromiseObject=new mt),this.initializationPromiseObject.res()}catch(t){ut.error(1,e,"Error initializing display managaer:",t)}}))}getOSMPusher(e){const t=document.createElement("div");if(t.id=te.PUSH_BANNER,t.style.setProperty("display","block","important"),t.style.height=e+"px","FRAMESET"===document.body.nodeName){const e=document.head;e.parentNode.insertBefore(t,e)}else{const e=document.body.firstChild;e.parentNode.insertBefore(t,e)}return t}removeOSMPusher(){var e;null!==(e=document.getElementById(te.PUSH_BANNER))&&void 0!==e&&e.remove()}queueDraftCampaign(e,t){return Ni(this,void 0,void 0,(function*(){var n=Li.baseLogTag+".queueDraftCampaign";try{yield this.initializationPromiseObject.p,e.position=t.position,this.testCampaign=e;var i=!("1"!==t.editorVersion||!t.htmlJsonPayload);const a=!i&&Li.createDefaultIframe(this.testCampaign.draftId,t.payload);let r;ut.warn(1,n,"Going to render test campaign "+e.draftId),r="FRAMESET"===document.body.nodeName?this.getOSMPusher(0):document.body.firstChild,i?(yield Ri(t.htmlJsonPayload,this.testCampaign.draftId,r),this.renderTestCampaign(e,a,t)):(r.parentNode.insertBefore(a,r),a.onload=()=>{a.contentWindow.postMessage({campaignId:e.draftId},"*"),"1"===t.editorVersion?this.handleBridgeInsertion(a.contentDocument,e.draftId):this.handleClassBasedTrackingForTestCampaign(a,t,e),this.renderTestCampaign(e,a)})}catch(e){ut.error(1,n,"Error queueing draft campaign",e)}}))}renderTestCampaign(e,t,n){return Ni(this,void 0,void 0,(function*(){if(t){var i;t.style.visibility="hidden",t.style.display="block",t.style.zIndex="2147483647",e.displaySettings.config.blocking?(t.style.height=window.innerHeight+"px",t.style.width="100%"):(t.style.height=getComputedStyle(t.contentDocument.body).height,t.style.width=getComputedStyle(t.contentDocument.body).width,e.templateType===An.POP_UP&&(t.style.margin="0px auto"),-1Ni(this,void 0,void 0,(function*(){yield Ri(t.htmlJsonPayload,e.campaignId,n,e,On)})):(i=Li.createDefaultIframe(e.campaignId,this.campaignRenderMap[e.campaignId].data.payload),this.campaignRenderMap[e.campaignId].iframe=i),yield this.campaignRenderMap[e.campaignId].waitForDelay,yield this.canCampaignBeRendered(e)){if(ut.warn(1,a,"Going to render "+e.campaignId),(null===(n=t.payload)||void 0===n?void 0:n.code)===te.GCG_ERROR_CODE)return ut.warn(1,a,`Can not render ${e.campaignId} as it falls under Control Group.`),void On(e,"OSM",!0)();this.campaignRenderMap[e.campaignId].setIsActive(!0),null!=this.renderListener&&this.renderListener(e),this.renderAllActiveCampaigns()}else ut.warn(1,a,"Can not render "+e.campaignId);else ut.warn(1,a,`Can not render ${e.campaignId}, as campaign is already Active.`)}catch(i){ut.error(1,a,"Error queuing campaign "+e.campaignId,i)}}))}renderAllActiveCampaigns(){return Ni(this,void 0,void 0,(function*(){var e,t=Li.baseLogTag+".renderAllActiveCampaigns";const n=this.getActiveCampaigns();if(this.restoreBodyStyle(),0{Mi.setScrollState(n),n[i].iframe.contentWindow.postMessage({campaignId:n[i].campaignMeta.campaignId},"*"),"1"===n[i].campaignMeta.editorVersion?(this.handleBridgeInsertion(n[i].iframe.contentDocument,n[i].campaignMeta.campaignId,n[i].campaignMeta),this.changeAnchorTagReDirectionMethod(n[i].iframe)):this.handleClassBasedTracking(n[i]),n[i].onFrameLoad.res()})}yield n[i].onFrameLoad.p,n[i].isJSONPayloadApproach?(ut.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].osmDivSelector.style.zIndex=(2147483647-(n.length-i-1)).toString(),this.liveCampaignPositionStyling(n[i].campaignMeta,n[i].osmDivSelector)):(n[i].iframe.style.visibility="hidden",n[i].iframe.style.display="block",ut.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].iframe.style.zIndex=(2147483647-(n.length-i-1)).toString(),n[i].iframe.style.margin="0",n[i].campaignMeta.display.config.blocking?(n[i].iframe.style.height=window.innerHeight+"px",n[i].iframe.style.width="100%"):(n[i].iframe.style.height=getComputedStyle(n[i].iframe.contentDocument.body).height,n[i].iframe.style.padding.includes("10px")?n[i].iframe.style.width=parseInt(getComputedStyle(n[i].iframe.contentDocument.body).width)+20+"px":n[i].iframe.style.width=getComputedStyle(n[i].iframe.contentDocument.body).width,n[i].campaignMeta.templateType===An.POP_UP&&(n[i].iframe.style.margin="0px auto"),n[i].data.payload&&-1{const e=this.campaignRenderMap[n[i].campaignMeta.campaignId];e&&e.isActive()&&(this.dismissInapp(n[i].campaignMeta.campaignId),window.MoeFocusHandler&&window.MoeFocusHandler(),Cn(n[i].campaignMeta,"OSM",!0))}),e))}else n[i].iframe.style.zIndex=(2147483647-(n.length-i-1)).toString();this.bannerLiveCampaignsStyling(n)}}))}restoreBodyStyle(){this.removeOSMPusher(),this.pushCardsTemplate(0);let e=0;Object.keys(this.campaignRenderMap).forEach((t=>{this.campaignRenderMap[t].campaignMeta.templateType===An.POP_UP&&this.campaignRenderMap[t].isActive()&&e++})),1<=e||(this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"))}canCampaignBeRendered(e){return Ni(this,void 0,void 0,(function*(){var t=Li.baseLogTag+".queueLiveCampaign";try{var n=yield yn.campaingsStatsStore.getItem(e.campaignId),i=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY),a=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME);return Nn.isValid(e,n)&&Nn.isValidMessagingCampaign(e,n,i,a,this.getActiveCampaigns())&&ei.getURLFilterResult(e)}catch(n){ut.error(1,t,`Error checking if campaign ${e.campaignId} can be rendered:`,n)}return!1}))}static createDefaultIframe(e,t){Li.baseLogTag,e=Wn(e);const n=document.createElement("iframe");return n.setAttribute("id",e),n.style.left="0px",n.style.top="0px",n.style.bottom="0px",n.style.right="0px",n.style.border="0px none",n.style.height="100%",n.style.width=window.innerWidth.toString()+"px",n.style.padding="0",n.style.overflow="hidden",n.style.overflowY="hidden",n.style.zIndex="999999",n.style.display="none",n.style.position="fixed",n.setAttribute("srcdoc",t),n}onRender(e){this.renderListener=e}getActiveCampaigns(){return this.campaignRenderOrder.map((e=>this.campaignRenderMap[e])).filter((e=>e.isActive()))}destroy(){this.getActiveCampaigns().forEach((e=>{e.setIsActive(!1)})),this.renderAllActiveCampaigns(),this.campaignRenderOrder=[],this.campaignRenderMap={}}adjustPositionOfCampaign(e,t,n){t&&(Object.assign(e,Di[t]),qe()&&n&&this.addMarginInMweb(e,t))}addMarginInMweb(e,t){const n={paddingLeft:"10px",paddingRight:"10px",marginTop:"0",marginBottom:"0"};"TOP"===t&&(n.marginTop="10px"),"BOTTOM"===t&&(n.marginBottom="10px"),Object.assign(e,n)}handleBridgeInsertion(e,t,n){var i=Li.baseLogTag+".handleBridgeInsertion";try{e.head.append(((e,t)=>{const n=document.createElement("script");return n.type="text/javascript",n.text=(t=t,`\n const moeSDK = window.parent.Moengage;\n let moeOsmCampaignMeta = ${JSON.stringify(e)};\n const moengage = {\n trackEvent: function (eventName, eventAttr, isNonInteractive) {\n if(moeOsmCampaignMeta) {\n return moeSDK.track_event(eventName, eventAttr);\n }\n return Promise.resolve();\n },\n trackClick: function (id) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.clickTracker(OsmCampaignMeta, 'OSM', {\n widget_id: id,\n })();\n }\n return Promise.resolve();\n },\n trackDismiss: function (isAuto = false) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.dismissEvent(OsmCampaignMeta, 'OSM', isAuto);\n }\n return Promise.resolve();\n },\n setAlias: function (data) {\n return moeSDK.update_unique_user_id(data);\n },\n setUniqueId: function (data) {\n return moeSDK.add_unique_user_id(data);\n },\n destroySession: function () {\n return moeSDK.destroy_session();\n },\n setUserName: function (data) {\n return moeSDK.add_user_name(data);\n },\n setFirstName: function (data) {\n return moeSDK.add_first_name(data);\n },\n setLastName: function (data) {\n return moeSDK.add_last_name(data);\n },\n setEmailId: function (data) {\n return moeSDK.add_email(data);\n },\n setMobileNumber: function (data) {\n return moeSDK.add_mobile(data);\n },\n setGender: function (data) {\n return moeSDK.add_gender(data);\n },\n setBirthDate: function (data) {\n //iso date format only\n return moeSDK.add_birthday(data);\n },\n setUserAttribute: function (name, value) {\n return moeSDK.add_user_attribute(name, value);\n },\n dismissMessage: function () {\n setTimeout(() => {\n moeSDK.onsite.displayManager.dismissInapp('${t}');\n }, 100)\n },\n showPushOptIn: function (config) {\n return moeSDK.call_web_push(config);\n },\n copyText: function (selector) {\n return new Promise((res, rej) => {\n if(!selector) rej();\n var text = document.querySelector(selector);\n if(text.textContent) {\n navigator.clipboard.writeText(text.textContent);\n res(null);\n }\n else {\n text.select();\n text.setSelectionRange(0, 99999);\n navigator.clipboard.writeText(text.value);\n res(null);\n }\n })\n }\n }\n const MoeOsm = moengage;\n `),n.setAttribute("data-moe-script","1"),n})(n,t)),ut.log(2,i,"JS-bridge script inserted successfully",t)}catch(e){ut.warn(2,i,"Failed to insert OSM JS Bridge: ",t)}}handleClassBasedTrackingForTestCampaign(e,t,n){const i=Li.baseLogTag+".handleClassBasedTrackingForTestCampaign";var a=e=>Array.prototype.slice.call(e),r=a(e.contentDocument.getElementsByClassName(te.CSS_SELECTORS.DISMISS_INAPP)),o=a(e.contentDocument.getElementsByClassName(te.CSS_SELECTORS.CLICK_INAPP));if(a=a(e.contentDocument.getElementsByTagName("a")),0===r.length&&ut.warn(1,i,"No dismiss class items present in this template"),0===o.length&&ut.warn(1,i,"No click class items present in this template"),-1{e.target&&e.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)&&ut.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live"),e.target&&e.target.classList.contains(te.CSS_SELECTORS.DISMISS_INAPP)&&this.dismissTestInapp(n.draftId)}));else{for(const e of o)e.addEventListener("click",(e=>{ut.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live")}));for(const e of r)e.addEventListener("click",(()=>{this.dismissTestInapp(n.draftId)}))}for(const e of a)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}handleClassBasedTracking(e){var t=Li.baseLogTag+".handleClassBasedTracking",n=e=>Array.prototype.slice.call(e);const i=e.iframe;var a=n(i.contentDocument.getElementsByClassName(te.CSS_SELECTORS.DISMISS_INAPP)),r=n(i.contentDocument.getElementsByClassName(te.CSS_SELECTORS.CLICK_INAPP));if(n=n(i.contentDocument.getElementsByTagName("a")),0===a.length&&ut.warn(1,t,"No dismiss class items present in this template"),0===r.length&&ut.warn(1,t,"No click class items present in this template"),e.data.payload&&(-1{var n;t.target&&t.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)&&(n=t.target.dataset.id,Dn(e.campaignMeta,"OSM",{widget_id:n})()),t.target&&t.target.classList.contains(te.CSS_SELECTORS.DISMISS_INAPP)&&(this.dismissInapp(e.campaignMeta.campaignId),t.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)||Cn(e.campaignMeta,"OSM"))}));else{for(const t of r)t.addEventListener("click",(t=>{t=t.target.dataset.id,Dn(e.campaignMeta,"OSM",{widget_id:t})()}));for(const t of a)t.addEventListener("click",(()=>{this.dismissInapp(e.campaignMeta.campaignId),t.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)||Cn(e.campaignMeta,"OSM")}))}for(const e of n)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}changeAnchorTagReDirectionMethod(e){var t,n=Li.baseLogTag+".changeAnchorTagReDirectionMethod";try{for(const n of(t=e.contentDocument.getElementsByTagName("a"),Array.prototype.slice.call(t))){var i=n.getAttribute("target"),a=n.getAttribute("href");a&&"_parent"===i&&(n.setAttribute("onclick",`setTimeout(()=>{window.open('${a}','_parent')})`),n.removeAttribute("href"))}ut.log(1,n,"Anchor Tag Href Rendering Changed to onClick for Campaign Frame: "+e.id)}catch(t){ut.error(1,n,"Failed to Change Anchor Tag Href Rendering for Campaign Frame: "+e.id)}}liveCampaignPositionStyling(e,t){var n=Li.baseLogTag+".liveCampaignPositionStyling";try{e.templateType===An.BANNER?e.display.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===An.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),ut.log(1,n,"Added Position Styles for CampaignId: "+e.campaignId)}catch(t){ut.error(1,n,"Failed adding Styles for CampaignId: "+e.campaignId)}}testCampaignPositionStyling(e,t){var n=Li.baseLogTag+".testCampaignPositionStyling";try{e.templateType===An.BANNER?e.displaySettings.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===An.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),ut.log(1,n,"Added Position Styles for CampaignId: "+e.draftId)}catch(t){ut.error(1,n,"Failed adding Styles for CampaignId: "+e.draftId)}}bannerTestCampaignStyling(e,t,n){var i,a=Li.baseLogTag+".bannerTestCampaignStyling";try{let n,r,o=!0;t?(n=parseInt(getComputedStyle(t.contentDocument.body).height),o=-1e.campaignMeta.templateType===An.BANNER)).length-1;0<=r;r--)try{if(e[r].isJSONPayloadApproach||e[r].iframe.contentDocument){let a,o=!0;e[r].isJSONPayloadApproach?a=parseInt(getComputedStyle(e[r].osmDivSelector.querySelector(".brz-container")).height):(a=parseInt(getComputedStyle(e[r].iframe.contentDocument.body).height),o=e[r].data.payload&&-1{this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED)}))}getImpressionStats(e){return ki(this,void 0,void 0,(function*(){var t=this.baseLogTag+".getImpressionStats";try{return yield yn.campaingsStatsStore.getItem(e.campaignId)}catch(n){ut.error(1,t,"Error getting impression stats for "+e.campaignId,n)}}))}getLastGlobalInappShown(){return ki(this,void 0,void 0,(function*(){return yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME)}))}getGlobalDelay(){return ki(this,void 0,void 0,(function*(){return yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY)}))}filterValidCampaigns(e){return ki(this,void 0,void 0,(function*(){var t=this.baseLogTag+".filterValidCampaigns",n=e.map((e=>this.getImpressionStats(e)));const i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay();try{const t=yield Promise.all(n);return e.filter(((e,n)=>{if(e.templateType!==An.SELF_HANDLED){if(!Nn.isCampaignWithinFC(e,t[n]))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN),!1;if(!Nn.hasCampaignClearedSelfDelay(e,t[n]))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MIN_DELAY),!1;if(!Nn.hasCampaignClearedGlobalDelay(e,a,i))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_GLOBAL_DELAY),!1}return!Nn.isCampaignExpired(e)||(this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_EXPIRED),!1)}))}catch(n){ut.error(1,t,"Error filtering and sorting campaigns",n)}}))}prioritizeMessagingCampaigns(e){return ki(this,void 0,void 0,(function*(){const t=yield this.filterValidCampaigns(e);if(0{t.campaignId!==e.campaignId&&this.deliveryStats.setStats(t,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE)})),e}}))}getCampaignTagMap(e){const t={},n=[],i=[];return e.forEach((e=>{null!=e.tag&&(i.indexOf(e.tag)<0&&i.push(e.tag),null==t[e.tag]&&(t[e.tag]=[]),t[e.tag].push(e))})),i.forEach((e=>{if(null!=t[e]){var i=t[e].sort(Nn.comparator);for(let e=0;ethis.getOnsitePayload(e,n)));try{const n=yield Promise.all(a);return e.filter(((e,i)=>{if(n[i]&&n[i].payload&&(e.onsitePayload=n[i],null!=e.tag&&null!=t[e.tag])){if("JSON"!==e.onsitePayload.payloadType)return!0;if((e=>{try{JSON.parse(e)}catch(e){return!1}return!0})(e.onsitePayload.payload))return!0}return!1}))}catch(a){ut.error(1,i,"Error delivering personalization campaigns",a)}}}))}messagingCampaignImpression(e,t){return ki(this,void 0,void 0,(function*(){var n=this.baseLogTag+".messagingCampaignImpression";if(e)try{var i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay(),r=this.displayManager.getActiveCampaigns();return Nn.hasCampaignClearedGlobalDelay(e,a,i)?Nn.canCampaignBeRenderedOverExisting(e,r.length)?ei.getURLFilterResult(e)?null==this.displayManager.campaignRenderMap[e.campaignId]||"MOE_EXIT"!==t&&t!==T?e:(ut.warn(1,n,`Can not render ${e.campaignId} `+(this.displayManager.campaignRenderMap[e.campaignId].isActive()?", as campaign is already Active.":"")),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN)):(ut.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_CONTEXT_CHANGED)):void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE):(ut.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_GLOBAL_DELAY))}catch(i){return void ut.error(1,n,"Error delivering messaging campaign",i)}}))}mostEligibleMessagingCampaign(e,t){return ki(this,void 0,void 0,(function*(){if(0e.templateType===An.SELF_HANDLED)),c=a.filter((e=>e.templateType!==An.SELF_HANDLED));0{t[e.campaignContext.cid]||(t[e.campaignContext.cid]=e.stats,e.stats={})}));var n={stats:t};this.OnsiteApiClient.sendBeacon(n,this.batchId)}catch(n){ut.error(1,t,"Error in sending delivery funnel stats",n)}}))}setStats(e,t){var n=(new Date).toISOString();e&&(e.stats[t]=e.stats[t]||[],e.stats[t].includes(n)||e.stats[t].push(n))}}var Fi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Wi=new mt;class Hi{constructor(e){this.initializationPomise=null,this.testDraftInfo=null,this.triggerManager=null,this.displayManager=null,this.onsiteSelfHandledTriggerListeners={},this.funnelManager=null,this.eventTriggerHandler=null,this.deliveryStats=null,this.initData=e,ut.setLogLevel(e.debugLevel),this.OnsiteApiClient=new fi(this.initData),this.iframeHelper=new pi}setLogLevel(e){ut.setLogLevel(e,!1)}isTestCampaignAvailable(){return Fi(this,void 0,void 0,(function*(){const e=Hi.baseLogTag+".isTestCampaignAvailable";if(window.opener){let t;window.addEventListener("message",(n=>Fi(this,void 0,void 0,(function*(){var i,a;n.data&&"inapp_test"===n.data.action&&(i=n.data,(yield ui.isValidRawJson(i))?(t=!0,a=new ui(i),ut.log(1,e,"Valid test campaign data found checking TestCampaign",i),yield this.checkForTestCampaign(a)):ut.error(1,e,"Data is not a valid test campaign",i),Wi.res())}))),!1),window.opener.postMessage("moe_test_osm","*"),setTimeout((()=>Fi(this,void 0,void 0,(function*(){t||(yield this.checkForTestCampaign()),Wi.res()}))),100)}else Wi.res()}))}initialize(){const e=Hi.baseLogTag+".initialize";return ut.log(1,e,"Initialising onsite module"),null==this.initializationPomise&&(this.initializationPomise=new Promise((t=>Fi(this,void 0,void 0,(function*(){try{yield yn.initialize(),yield this.isTestCampaignAvailable(),Wi.p.then((()=>Fi(this,void 0,void 0,(function*(){yield this.syncCampaigns();const n=yield Un();var i=this.isExitIntentCampaignFound(n);if(i.length&&(yield this.prefetchExitIntentCampaigns(i)),i=n.filter((e=>null!=e.triggerData)),this.displayManager=new Li,this.displayManager.onRender((t=>{ut.log(1,e,"Campaign rendered: "+t.campaignId),yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME,new Date)})),null!=this.testDraftInfo&&this.testDraftInfo.draftType===te.DRAFT_CAMPAIGN_TPYES.ONSITE_MESSAGING){ut.log(1,e,"Test campaigns present, will be showing only the test campaign."),ut.log(1,e,"No live campaign will be shown till draft campaign showing");try{ut.log(1,e,"Trying to render draft campaign with id "+this.testDraftInfo.draftId);var a=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo);ut.log(1,e,"Test campaign payload: ",a),a&&this.displayManager.queueDraftCampaign(this.testDraftInfo,a)}catch(n){ut.error(1,e,`Error fetching data for test campaign ${this.testDraftInfo.draftId}: `,n)}}else this.deliveryStats=new Ui(this.initData),this.triggerManager=new Ai(i),this.funnelManager=new xi(this.initData,this.displayManager,this.deliveryStats),this.eventTriggerHandler=new Bi,i=this.eventTriggerHandler.handler.bind(null,this.funnelManager,this.onsiteSelfHandledTriggerListeners,this.handlePersonalizationCampagins.bind(this),this.handleMessagingCampaigns.bind(this)),this.triggerManager.onTrigger(i),bi.setListener(i),Ti.setDeliveryStats(this.deliveryStats),bi.setDeliveryStats(this.deliveryStats),yield bi.logDeliveryFunnelForExpiredTimerCampaigns(),yield Ti.updateCampaignTimeInSecondaryEventsStore(),yield bi.createNewTimers(),this.triggerManager.startWatching();t(!0)}))))}catch(t){ut.error(1,e,t)}}))))),this.initializationPomise}handleMessagingCampaigns(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".handleMessagingCampaigns";e.onsitePayload&&(ut.log(1,t,"Campaign triggered: "+e.campaignId),ut.log(1,t,"Payload for campaign:",e.onsitePayload),this.displayManager.queueLiveCampaign(e,e.onsitePayload))}))}handlePersonalizationCampagins(e){return Fi(this,void 0,void 0,(function*(){const t=Hi.baseLogTag+".handlePersonalizationCampagins";0{null!=e.tag&&(ut.log(1,t,"Personlization Campaign triggered: "+e.campaignId),this.onsiteSelfHandledTriggerListeners[e.tag].forEach((t=>{this.handleSelfHandledCallback(e,e.onsitePayload,t)})))}))}))}logout(){var e;return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".logout";if(ut.log(1,t,"Starting module logout"),this.initializationPomise=null,this.displayManager){const t=Object.keys(this.displayManager.campaignRenderMap);null!==(e=this.displayManager.testCampaign)&&void 0!==e&&e.draftId&&t.push(null===(e=this.displayManager.testCampaign)||void 0===e?void 0:e.draftId),t.forEach((e=>{const t=document.getElementById("moe-onsite-campaign-"+e);t&&t.remove()})),this.displayManager.destroy()}this.triggerManager&&this.triggerManager.destory(),Ti.destroy(),bi.destroy(),this.displayManager=null,this.funnelManager=null,this.eventTriggerHandler=null,yield bi.deleteAllPendingTimers(),yield yn.clear(),ut.log(1,t,"Starting module logout complete")}))}checkForTestCampaign(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".checkForTestCampaign";try{var n=e||(yield this.iframeHelper.getDraftCampaignInfo());null==n?(ut.log(1,t,"No draft campaign found"),this.testDraftInfo=null):(ut.log(1,t,"Found draft campaign: ",n),this.testDraftInfo=n,null==this.testDraftInfo.draftId&&(this.testDraftInfo.draftType=te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON))}catch(n){ut.error(1,t,"Error getting test campaign",n)}}))}getData(e,t){return Fi(this,void 0,void 0,(function*(){const n=Hi.baseLogTag+".getData";null==t&&(ut.warn(1,n,"Moengage.onsite.getData called without a providing a callback."),t=()=>{});try{if(yield this.initializationPomise,null!=this.testDraftInfo){var i;ut.log(1,n,"Fetching test campaign: ",this.testDraftInfo),this.testDraftInfo.draftType===te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON&&(i=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo),t(null,{payload:i.payload,click:()=>{ut.log(1,n,"This is a test campaign")},imp:()=>{ut.log(1,n,"This is a test campaign")}}))}else{const i=yield yn.campaingsTagsStore.getItem(e);if(i){const o=yield Promise.all(i.map((e=>Bn(e))));var a=o.filter((e=>null==e.triggerData)),r=yield this.funnelManager.mostEligibleSelfHandledPersonalizationCampaigns(a,e);r&&r.onsitePayload?this.handleSelfHandledCallback(r,r.onsitePayload,t):(ut.error(1,n,"Error fetching campaign payload"),t({message:"There was an error fetching data for this tag"},null))}else ut.warn(1,n,"Could not find any eligible campaign for tag",e),t({message:"Could not find any eligible campaign for tag "+e},null)}}catch(i){ut.error(1,n,"Error getting campaign",i)}}))}registerCallback(e,t){return Fi(this,void 0,void 0,(function*(){var n=Hi.baseLogTag+".registerCallback";try{yield this.initializationPomise,null==this.onsiteSelfHandledTriggerListeners[e]?this.onsiteSelfHandledTriggerListeners[e]=[t]:this.onsiteSelfHandledTriggerListeners[e].push(t)}catch(t){ut.error(1,n,"Error setting callback for tag",e),ut.error(1,n,"Error stack:",t)}}))}handleSelfHandledCallback(e,t,n){return Fi(this,void 0,void 0,(function*(){var i=Hi.baseLogTag+".handleSelfHandledCallback";if(e.campaignContext=t.campaignContext,"JSON"===t.payloadType)try{t.payload=JSON.parse(t.payload);var a=Te(e,"triggerData.trigger_delay.delayInSeconds",0)||0;setTimeout((()=>{Pn(e,"WP"),n(null,{payload:t.payload,click:t=>{Dn(e,"WP",t)()},imp:On(e,"WP")})}),1e3*a)}catch(r){a=`Payload for campaign_id ${e.campaignId} is not a valid JSON`,ut.error(1,i,a),ut.error(1,i,"Payload provided:",t.payload),n({message:a},null)}else Pn(e,"WP"),n(null,{payload:t.payload,click:t=>{Dn(e,"WP",t)()},imp:On(e,"WP")})}))}syncCampaigns(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".syncCampaigns";try{(yield this.shouldClearMetaStorage())&&(yield yn.campaingsMetaStore.clear(),yield this.rebuildTagStore()),(yield this.shouldSaveRemoteCampaigns())&&(yield this.saveRemoteCampaigns())}catch(t){ut.error(1,e,"Error getting remote campaigns: ",t)}}))}shouldClearMetaStorage(){return Fi(this,void 0,void 0,(function*(){return(yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION))!==Qe().getSdkVersion()}))}shouldSaveRemoteCampaigns(){var e;return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".shouldSaveRemoteCampaigns",n=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION),i=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_META_CALL_TIME),a=(i=new Date(i),(new Date).getTime());return null==i||a-i>te.META_REFRESH_TIME||(ut.remoteLogTracking(1,"info",t,"Last fetch was less than 15 mins ago at ",i),n!==Qe().getSdkVersion()?(ut.remoteLogTracking(1,"info",t,"Version change detected. Will proceed to fetch latest campaigns"),!0):!(!(n=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.UNIQUE_ID))||n===(null===(e=We.get(r.USER_DATA))||void 0===e?void 0:e.deviceUuid)||(ut.remoteLogTracking(1,"info",t,"Unique device id change detected. Will proceed to fetch latest campaigns"),0)))}))}saveRemoteCampaigns(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".saveRemoteCampaigns";yield yn.campaingsMetaStore.clear(),yield yn.exitIntentCampaignStore.clear();var t=yield this.OnsiteApiClient.getCampaignsMeta();null!=t&&(yield this.addCampaignsToDB(t.campaignsMeta),ut.log(1,e,"Inapp campaigns meta saved!")),yield Ti.pruneRemovedCampaigns(),yield Ti.removeStaleTriggeringPrimaryEventCampaigns(),yield yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY,t.globalDelayBetweenInapps),yield yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION,Qe().getSdkVersion())}))}addCampaignsToDB(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".addCampaignsToDB";ut.log(1,t,`Adding/Updating ${e.length} campaigns in DB`,e.map((e=>e.campaignId)));try{yield Promise.all(e.map((e=>yn.campaingsMetaStore.setItem(e.campaignId,e)))),yield this.rebuildTagStore()}catch(e){ut.error(1,t,"Error saving remote campaigns:",e)}}))}rebuildTagStore(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".rebuildTagStore";try{yield yn.campaingsTagsStore.clear();var t=yield Un();const e={};for(const n of t)null!=n.tag&&(null==e[n.tag]&&(e[n.tag]=[]),e[n.tag].push(n.campaignId));const n=[];yield yn.campaingsTagsStore.clear();for(const t in e)e.hasOwnProperty(t)&&n.push(yn.campaingsTagsStore.setItem(t,e[t]));yield Promise.all(n)}catch(t){ut.error(1,e,"Error updating tags store:",t)}}))}isExitIntentCampaignFound(e){return e.filter((e=>e.templateType!==An.SELF_HANDLED&&kn(e,_)))}prefetchExitIntentCampaigns(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".prefetchExitIntentCampaigns";const n=yield Jt.createEvent("MOE_EXIT",[]),i=(yield Ln(e)).filter((e=>ei.getFilterResult(n,e)));if(!i||!i.length)return ut.log(1,t,"Exit intent campaign not eligible to prefetch"),!1;{const e=yield xn(i[0]);if(!e||!e.onsitePayload||e.onsitePayload.updatedTime.getTime()!==i[0].updatedTime.getTime()){var a=i[0].campaignId;const e=yield this.OnsiteApiClient.getCampaignPayload(i[0]);e.payload||e.htmlJsonPayload?(e.updatedTime=i[0].updatedTime,yield yn.exitIntentCampaignStore.setItem(a,e),ut.log(1,t,"Exit intent campaign prefetched: "+a)):e.error&&e.reason&&(yield yn.exitIntentCampaignStore.setItem(a,e))}}}))}refresh(){return Fi(this,void 0,void 0,(function*(){$i.onsite.appId&&(yield Zi(),Qi())}))}sendDelayCampaignStats(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".sendDelayCampaignStats",t=Object.keys(this.displayManager.campaignRenderMap).filter((e=>!this.displayManager.campaignRenderMap[e].campaignRendered));0{var e;const t=window.Moengage;if(t.onsite){if(t.onsite.displayManager){t.onsite.triggerManager&&null!==(e=null===(e=t.onsite.triggerManager.primaryEventsHash)||void 0===e?void 0:e.MOE_PAGE_SCROLL)&&void 0!==e&&e.length&&window.removeEventListener("scroll",t.onsite.triggerManager.getScrollListenerCallback());const n=t.onsite.displayManager,i=Object.keys(n.campaignRenderMap);t.onsite.sendDelayCampaignStats&&t.onsite.sendDelayCampaignStats(),i.forEach((e=>{document.getElementById("moe-onsite-campaign-"+e)&&document.getElementById("moe-onsite-campaign-"+e).remove(),n.campaignRenderMap[e].isActive()&&n.dismissInapp(e),clearTimeout(n.campaignRenderMap[e].delayTimer),delete n.campaignRenderMap[e],n.campaignRenderOrder=n.campaignRenderOrder.filter((t=>t!==e))})),setTimeout((()=>{qe()?t.onsite.triggerManager.windowEventManager.isPopStateEventBound&&(t.onsite.triggerManager.windowEventManager.setHistoryState(),t.onsite.triggerManager.windowEventManager.isExitIntentShown=!1,t.onsite.triggerManager.windowEventManager.scrollExitIntentInterval=null):document.removeEventListener("mouseout",t.onsite.triggerManager.windowEventManager.exitIntentListener)}),0)}$t.resetListeners(),t.onsite.initializationPomise=null,t.onsite.initialize&&t.onsite.initialize()}})(),window.MoeFocusHandler&&window.MoeFocusHandler(),window.Moengage.shouldClearPrevEvents=(new Date).getTime(),Xt.clear(),Xt.clearListeners(),$i.track_page_view();var i=$i.onsite.triggerManager;0<(null===(e=null==i?void 0:i.exitIntentCampaigns)||void 0===e?void 0:e.length)&&qe()&&null!==(t=null==i?void 0:i.windowEventManager)&&void 0!==t&&t.onMobileScrollAndExit(i.onExit),nn.getWebSDKSettings().then((e=>{e.isDomainLevelStorage&&We.copyKeysFromCookie(),null!=e&&e.configs.isCardsModuleEnabled&&$i.cards&&($i.cards.checkCacheAndSaveRemote(pe),$i.cards.displayManager.closeIframe(),$i.cards.displayManager.addCardsInboxListener()),null!=e&&e.configs.isWebPersonalisationModuleEnabled&&(null!==(e=window.MoeWebP)&&void 0!==e&&e.getLiveExperiences(),ut.log(1,n,"webP sync function called"))})).catch((e=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}Hi.baseLogTag="MoeOnsite",window[te.OSM_MODULE]=Hi,window.MoeOsm=(ut.log(1,"OsmFunctions","Osm Functions for tracking user behaviour"),{trackEvent:(e,t,n,i)=>(e=Oi(e),{}.constructor===n.constructor&&e?(n=Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName},e.campaignContext),n),window.Moengage.track_event(t,n)):Promise.resolve()),trackClick:(e,t)=>(e=Oi(e))?window.Moengage.onsite.displayManager.clickTracker(e,"OSM",{widget_id:t})():Promise.resolve(),trackDismiss:(e,t=!1)=>(e=Oi(e))?window.Moengage.onsite.displayManager.dismissEvent(e,"OSM",t):Promise.resolve(),setAlias:e=>window.Moengage.update_unique_user_id(e),setUniqueId:e=>window.Moengage.add_unique_user_id(e),destroySession:()=>window.Moengage.destroy_session(),setUserName:e=>window.Moengage.add_user_name(e),setFirstName:e=>window.Moengage.add_first_name(e),setLastName:e=>window.Moengage.add_last_name(e),setEmailId:e=>window.Moengage.add_email(e),setMobileNumber:e=>window.Moengage.add_mobile(e),setGender:e=>window.Moengage.add_gender(e),setBirthDate:e=>window.Moengage.add_birthday(e),setUserAttribute:(e,t)=>window.Moengage.add_user_attribute(e,t),dismissMessage(e){setTimeout((()=>{window.Moengage.onsite.displayManager.dismissInapp(""+e)}),100)},showPushOptIn:e=>window.Moengage.call_web_push(e),copyText:e=>new Promise(((t,n)=>{e||n();const i=document.querySelector(e);i.textContent?navigator.clipboard.writeText(i.textContent):(i.select(),i.setSelectionRange(0,99999),navigator.clipboard.writeText(i.value)),t(null)}))});class Gi{constructor(){this.getDeviceUniqueId=e=>{window.addEventListener(x,(t=>{t.detail.name===B.DEVICE_UUID&&(t=t.detail.data,e(t))}))}}onUpdateDeviceId(e){this.getDeviceUniqueId(e)}trackClick(e,t){return Gi.track("MOE_WEBP_MESSAGE_CLICKED",e,t)}trackImpression(e){return Gi.track("MOE_WEBP_MESSAGE_SHOWN",e)}static track(e,t,n){var i=Gi.baseLogTag+".track";if("string"==typeof t)try{t=JSON.parse(t)}catch(e){return void ut.error(2,i,"Error parsing JSON string:",e)}var a=t&&t.cid.split("_")[0];if(!a)return Promise.reject();try{return Qe()?(ut.log(1,i,e+": Event Tracked"),Qe().track_event(e,Object.assign({campaign_id:a},t))):(window.moengage_q=window.moengage_q||[]).push({f:"track_event",a:[e,Object.assign(Object.assign({campaign_id:a},t),n)]}),Promise.resolve()}catch(e){ut.error(2,i,"Failed Tracking expression",e)}}}Gi.baseLogTag="Web Personalisation Tracking";var Vi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const ji="MoEngage";let Yi=new mt,zi=new mt;const qi={getData:(e,t)=>{nn.getWebSDKSettings().then((n=>{Yi.p.then((n=>{n.getData(e,t)}))})).catch((e=>{}))},registerCallback:(e,t)=>{nn.getWebSDKSettings().then((n=>{Yi.p.then((n=>{n.registerCallback(e,t)}))})).catch((e=>{}))}};class $i{static callWebPush(e){const t=ji+".callWebPush";nn.getWebSDKSettings().then((n=>{var i,a,r,o,s,l,c;n.isConfigured?n.optInConfig.type===Nt.TYPE.SELF_HANDLED?(ut.log(1,t,"Starting web push functions"),null!=e&&(Be.setSoftAskConfig(e),i=Te(e,"soft_ask_display_callback",null),a=Te(e,"soft_ask_allow_callback",null),r=Te(e,"soft_ask_block_callback",null),o=Te(e,"hard_ask_allow_callback",null),s=Te(e,"hard_ask_dismiss_callback",null),l=Te(e,"hard_ask_block_callback",null),c=U,sn.addCallback(c.SOFT_ASK_SHOWN,i),sn.addCallback(c.SOFT_ASK_ALLOWED,a),sn.addCallback(c.SOFT_ASK_DISMISSED,r),sn.addCallback(c.HARD_ASK_ALLOWED,o),sn.addCallback(c.HARD_ASK_DISMISSED,s),sn.addCallback(c.HARD_ASK_DENIED,l)),Et.getInstance().then((e=>{new vn(n,e).callWebPush()}))):ut.warn(1,t,"This feature can only be used when you have chosed self-handled approach in the dashboard. You can check dashboard here:",z):ut.log(1,t,"Web push settings not configured on dashboard yet. To start web push subscriptions, please configure the settings on dashboard.")})).catch((e=>{ut.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}static showNotification(e){nn.getWebSDKSettings().then((t=>{Et.getInstance().then((n=>{new vn(t,n).showNotification(e)}))})).catch((e=>{}))}static getSdkVersion(){return"5.0.690"}static setDebugLevel(e){return Vi(this,void 0,void 0,(function*(){const t=ji+".setDebugLevel";try{"number"==typeof e&&(!Be.get().disableOnsite&&$i.onsite.setLogLevel&&$i.onsite.setLogLevel(e),nn.getWebSDKSettings().then((t=>{null!=t&&t.configs.isCardsModuleEnabled&&$i.cards&&$i.cards.setLogLevel(e),null!=t&&t.configs.isWebPersonalisationModuleEnabled&&window.MoeWebP&&window.MoeWebP.setLogLevel&&window.MoeWebP.setLogLevel(e),ut.setLogLevel(e,!0)})).catch((n=>{ut.setLogLevel(e,!0),ut.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")})))}catch(e){ut.error(0,t,"Error changing log level:",e)}}))}static vitals(){var e=It.getSync();return{deviceUuid:e.deviceUuid,userDetails:e,pushToken:We.get(r.PUSH_TOKEN),softAskStatus:We.get(r.SOFT_ASK_STATUS),hardAskStatus:We.get(r.HARD_ASK_STATUS)}}static help(){var e=ji+".help";ut.log(0,e,"Moengage Dashboard - ",Y.MOE_DASHBOARD);for(const t in Y)Y.hasOwnProperty(t)&&ut.log(0,e,t,"-",Y[t])}static track_event(e,t){return Qt.track(e,t)}static add_unique_user_id(e){return Vi(this,void 0,void 0,(function*(){return yield fn.login(e)}))}static update_unique_user_id(e){return fn.updateUniqueId(e)}static add_user_attribute(e,t){return fn.addAttribute(e,t)}static add_first_name(e){return fn.addAttribute("first_name",e)}static add_last_name(e){return fn.addAttribute("last_name",e)}static add_email(e){return fn.addAttribute("email",e)}static add_mobile(e){return fn.addAttribute("mobile",e)}static add_user_name(e){return fn.addAttribute("name",e)}static add_gender(e){return fn.addAttribute("gender",e)}static add_birthday(e){return fn.addAttribute("birthday",e)}static destroy_session(){return $i.user.logout()}static call_web_push(e){$i.callWebPush(e)}static getBranch(){return"feat/OSMINAPP-6464/web-push-service-worker"}static track_page_view(){return Qt.track(l,{timestamp:Number(Date.now())}),Qt.track(c,{timestamp:Number(Date.now())})}static handle_page_change(){Ki()}}$i.user=fn,$i.event=Qt,$i.device=class{static getUuid(){return We.get(r.USER_DATA).deviceUuid}static getPushToken(){return We.get(r.PUSH_TOKEN)}static getPermissionState(e){return new Promise(((t,n)=>{nn.getWebSDKSettings().then((i=>{Et.getInstance().then((a=>{new vn(i,a).getPermissionState().then((n=>{t(n),e&&e(null,n)})).catch((t=>{n(t),e&&e(t,null)}))}))})).catch((t=>{n(t),e&&e(t,null)}))}))}},$i.onsite=qi,$i.reports=zt.reports,$i.remoteLogs=zt,$i.web_p=new Gi;var Ji=()=>{};const Xi={track_event:Ji,add_user_attribute:Ji,add_first_name:Ji,add_last_name:Ji,add_email:Ji,add_mobile:Ji,add_user_name:Ji,add_gender:Ji,add_birthday:Ji,destroy_session:Ji,add_unique_user_id:Ji,moe_events:Ji,location_type_attribute:Ji,call_web_push:Ji,setDebugLevel:Ji};function Qi(){var e;null!==(e=null===(e=$i.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId||(e=Be.get(),$i.onsite=new Hi(e),Yi.res($i.onsite),null!==(e=$i.onsite)&&void 0!==e&&e.initialize())}function Zi(){var e;return Vi(this,void 0,void 0,(function*(){null!==(e=null===(e=$i.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId&&(ut.log(1,"Moengage.disableOnsiteApi","logging out from inapp module"),yield $i.onsite.logout(),Yi=new mt,$i.onsite=qi)}))}var ea=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class ta{static initialize(){return ea(this,void 0,void 0,(function*(){var e;return null==ta.ready&&(ta.campaignStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:de,storeName:ge.STORE_NAME}),ta.metaStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:de,storeName:ue.STORE_NAME}),e=[ta.campaignStore.ready(),ta.metaStore.ready()],ta.ready=Promise.all(e)),ta.ready}))}static clear(){return ea(this,void 0,void 0,(function*(){var e=ta.baseLogTag+".clear";try{yield ta.initialize(),yield Promise.all([ta.campaignStore.clear(),ta.metaStore.clear()]);var t=[ta.campaignStore.ready(),ta.metaStore.ready()];ta.ready=Promise.all(t)}catch(t){ut.error(1,e,"Error clearing cards stores:",t)}return ta.ready}))}}let na;function ia(e){const t="Pre-Initialization";if(!(e=>{const t=["bot","spider","crawler","crawling","Applebot","PetalBot","pingbot","proximic","AdsBot-Google","Googlebot","Cincraw","SnapchatBot","Snapchat-Proxy/1.0","SnapchatAds","Snapchat-Ads/1.0","YandexRenderResourcesBot","bingbot","slurp","MicrosoftPreview","Baiduspider","HeadlessChrome",...Array.isArray(e)?e:[]];return new RegExp(t.join("|"),"i").test(navigator.userAgent)})(null==e?void 0:e.bots_list)){var n=Qe();return n&&0{$t.broadcastToWindow({topic:x,name:B.MOE_INIT,data:Be.get()}),$e()===ye.WEB&&aa(),ut.setLogLevel(Be.get().debugLevel),ut.log(1,t,"Script loaded!"),ut.customLabel(1,t,"SDK Version","5.0.690"),0{$t.broadcastToWindow({topic:x,name:B.MOE_INIT_COMPLETED})}))})),e=window.moengage_object||"Moengage",window[e]=$i,$i):(ut.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",Y.WEBSDK_DOCS),Xi))}ut.error(1,t,"Bot detected, Can't initialise the MoEngage Web SDK")}ta.baseLogTag="MOE_CARDS_STORES";const aa=()=>{_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:J,storeName:X}).clear()},ra=()=>new Promise((e=>{"complete"!==window.document.readyState?window.addEventListener("load",(()=>{e(!0)})):e(!0)}));window&&(window.moe=ia,window.moeBannerText="banner",window[ee]=Xt);const oa=()=>{try{var e=localStorage.getItem("moe_segment_cluster"),t=localStorage.getItem("moe_segment_sw_path"),n=localStorage.getItem("moe_segment_sw_scope");const i={};return e&&(i.cluster=e),t&&(i.swPath=t),n&&(i.swScope=n),!!(e||t||n)&&(ut.log(1,".isSegmentDataFound","Data found for segment initialisation",i),i)}catch(e){return!1}},sa=()=>{const e="Initialization";return new Promise((t=>nn.getWebSDKSettings().then((n=>(dt.setRemoteLogging(n),n.isDomainLevelStorage&&(We.isSharedWithCookie=!0,We.copyKeysFromCookie()),pn.addBeforeUnloadListeners(n),(n.configs.isBatchingEnabled||n.configs.remoteLogTracking)&&(zt.init(n),ut.log(1,e,"Enabled Batching for "+(n.configs.isBatchingEnabled?"Event Tracking":"")+(n.configs.remoteLogTracking?", Remote Logs Tracking":""))),It.get().then((i=>{if(un.get().deviceToLogout===i.deviceUuid)return ut.remoteLogTracking(1,"info",e,"User was not able to logout last time. Completing the logout now and starting new session."),$i.user.logout();i.deviceAdded&&nn.onDeviceAdd.res(),n.isPushSubBilling&&ut.warn(1,e,"You are under push subscriber based billing plan. We are only tracking users with an email, phone number or have subscribed to web push. All user attributes and events will be stored in a queue till we receive either of the properties.");var a=new vt;(new pn).onWindowVisibilityChange(a.handleBrowserInactivity),ut.customLabel(1,e,"Device UUID",i.deviceUuid),ut.customLabel(1,e,"Device Added",i.deviceAdded),$t.broadcastToWindow({topic:x,name:B.SETTINGS_FETCHED,data:n}),$t.broadcastToWindow({topic:x,name:B.DEVICE_UUID,data:i.deviceUuid}),n.isPushSubBilling||i.deviceAdded||nn.deviceAdd(),$i.track_page_view(),on.clear(r.Q.DEVICE),on.clear(r.Q.REPORT),Be.get().enableSPA&&!na&&ca(),Et.getInstance().then((t=>{var i,a;const o=!Be.get().disableWebPush&&new vn(n,t);var s,l=!(null!==(i=null===(l=window.MoeWebP)||void 0===l?void 0:l.isEditorModeEnabled)&&void 0!==i&&i.call(l));o&&o.isWebPushEnabled()&&l?(0<=[Nt.TYPE.ONE_CLICK,Nt.TYPE.TWO_STEP].indexOf(n.optInConfig.type)?o.callWebPush():(ut.log(1,e,"Self handled setting. Will show opt-in on manual invocation, if required."),o.getPermissionState().then((t=>{var n=We.get(r.PUSH_TOKEN);(t===Zt.GRANTED||null!=n&&t===Zt.DENIED)&&(t===Zt.GRANTED&&ut.log(1,e,"Notification permission already granted. Proceeding to subscribe the user"),o.callWebPush())})).catch((t=>{ut.warn(1,e,"Cannot get permission state: ",t)}))),o.trackPushOptedDeviceAttribute()):vn.SUPPORTED_BROWSERS.indexOf(t.name)<0?ut.warn(1,e,"Web push not supported on this browser. Supported browsers are:\n\t\t1. Google Chrome\n\t\t2. Mozilla Firefox\n\t\t3. Opera\n\t\t4. Edge\n\t\t5. Safari 16 and above + macOS 13 and above"):ut.warn(1,e,"Web push feature not enabled for current environment"),!Be.get().disableOnsite&&l?nn.onDeviceAdd.p.then((()=>{Qi()})):ut.warn(1,e,"Onsite is disabled in this page since `disableOnsite: true` is passed during initialization."),null!=n&&n.configs.isCardsModuleEnabled&&null!==(a=Be.get().cards)&&void 0!==a&&a.enable&&l?(s=n,Sn.loadModule(ne.CARDS).then((e=>{zi.res(e),e.initialize(s),$i.cards=e})).catch((e=>{zi.rej(e)}))):ta.clear(),la()})),t(!0)}))))).catch((n=>{ut.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),t(!1)}))))},la=()=>{const e="Moengage.clearWindowQ";ra().then((()=>{try{var t=window.moengage_object||"Moengage";if(window[t]&&window.moengage_q){let i=window.moengage_q;if(window.moengage_q=[],i&&0{const e="startSpaUrlHandler";let t=document.location.href;(()=>{na=!0,ut.log(1,e,"Start listening to URL changes");const n=document.querySelector("body"),i=new MutationObserver((n=>{n.forEach((n=>{t===document.location.href||document.location.href.includes("moe-card=1")||(t=document.location.href,ut.log(1,e,"URL Change detected",t),Ki())}))}));i.observe(n,{childList:!0,subtree:!0})})()},da={clearWindowQ:la,startSpaUrlHandler:ca,isSegmentDataFound:oa,clearEventsFromIDB:aa,moeInit:ia,windowLoaded:ra}})()})(); \ No newline at end of file From 2c4630a5176cfe915e4119fdcbe056df6a9c2039 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Wed, 16 Oct 2024 11:06:28 +0530 Subject: [PATCH 02/12] feat(chromeExt): remove cookies from code of service worker --- chrome-extension/background.js | 72 +--------------------------------- 1 file changed, 1 insertion(+), 71 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 9c1a6295..6730d94d 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -113,83 +113,13 @@ var MoengageSW = (function(self) { if (event.data) { if (event.data.app_id) { await setStoreData('reportParams', event); - if (event.data?.environment) { + if (event.data.environment) { baseDomain.set(event.data.environment); } - } else if (event.data.cartToken) { - //track cart cookie as user attribute - event.waitUntil( - getStoreData('reportParams') - .then(function(res) { - if (res.data.environment) { - baseDomain.set(res.data.environment); - } - return; - }) - .then(function() { - return trackCartToken(event.data); - }) - ); } } } - function trackCartToken(data) { - return new Promise((resolve, reject) => { - //check upto 5 seconds if cart cookie exists - let maxSecondsToCheck = 5; - const cartTokenInterval = setInterval(async () => { - try { - const cookie = await cookieStore.get('cart'); - - if (cookie && cookie.value) { - //cookie found, clearInterval and track the cookie as cart_token - clearInterval(cartTokenInterval); - const extraKeys = { - h: '', - meta: { - bid: uuidV4() - }, - url: data.url - }; - const idbPayload = { cart_token: cookie.value }; //setting this key to check if re-tracking cart_token attribute is eligible on next page - const userId = data.moe_user_id; - if (userId) { - extraKeys['identifiers'] = { - moe_user_id: userId - }; - - //setting this key to check if re-tracking cart_token attribute is eligible on next page - idbPayload['USER_ATTRIBUTE_UNIQUE_ID'] = userId; - } - trackEvent( - 'EVENT_ACTION_USER_ATTRIBUTE', - { - cart_token: cookie.value - }, - undefined, - extraKeys - ); - await setStoreData('shopify_cookie_attr', idbPayload); - resolve(); - } - - maxSecondsToCheck--; - if (maxSecondsToCheck <= 0) { - //5 second elapsed, clearInterval - clearInterval(cartTokenInterval); - resolve(); - } - } catch (error) { - //error occurred while trying to get the cookie - clearInterval(cartTokenInterval); - console.error(`Unable to fetch the cart cookie: ${error}`); - resolve(); - } - }, 1000); - }); - } - async function onPush(event) { console.log('Service Worker OnPush'); if (!(self.Notification && self.Notification.permission === 'granted')) { From bd8e8e423a3953a760105395a7f1f1638c8a07d5 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Mon, 11 Nov 2024 13:35:21 +0530 Subject: [PATCH 03/12] feat(extesnion): updated web push service worker file --- chrome-extension/background.js | 60 ++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 6730d94d..a91cf2d6 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -26,17 +26,41 @@ var MoengageSW = (function(self) { }; async function setStoreData(key, value) { - await chrome.storage.local.set({ [key]: value }); - } + return new Promise((resolve, reject) => { + chrome.storage.local.set({ [key]: value }, () => { + if (chrome.runtime.lastError) { + reject(new Error(chrome.runtime.lastError)); + } else { + resolve(); + } + }); + }); + } // To get items with async/await + async function getStoreData(key) { - const data = (await chrome.storage.local.get([key])) || {}; - return data[key]; + return new Promise((resolve, reject) => { + chrome.storage.local.get([key], (result) => { + if (chrome.runtime.lastError) { + reject(new Error(chrome.runtime.lastError)); + } else { + resolve(result[key]); + } + }); + }); } async function removeStoreData(key) { - await chrome.storage.local.remove(key); + return new Promise((resolve, reject) => { + chrome.storage.local.remove(key, () => { + if (chrome.runtime.lastError) { + reject(new Error(chrome.runtime.lastError)); + } else { + resolve(); + } + }); + }); } async function getCampaignData(key) { @@ -51,7 +75,7 @@ var MoengageSW = (function(self) { const data = (await getStoreData('moe_backup')) || {}; if (data) { data[key] = value; - await chrome.storage.local.set({ moe_backup: data }); + await setStoreData('moe_backup', data); } } @@ -59,7 +83,7 @@ var MoengageSW = (function(self) { const data = (await getStoreData('moe_backup')) || {}; if (data) { delete data[key]; - await chrome.storage.local.set({ moe_backup: data }); + await setStoreData('moe_backup', data); return true; } return false; @@ -557,28 +581,24 @@ var MoengageSW = (function(self) { /** * Reterives API request metadata from offline db */ - function getRequestMetaData() { - return getStoreData('requestMetaData').then(function(requestMetaData) { + async function getRequestMetaData() { + const requestMetaData = await getStoreData('requestMetaData'); return requestMetaData; - }); } /** * Creates Report Adf request object */ - function requestPayload() { - return Promise.all([getRequestMetaData(), mergeMOEReports()]).then(function( - moeRequestValues - ) { + async function requestPayload() { + const moeRequestValues = await Promise.all([getRequestMetaData(), mergeMOEReports()]); if (moeRequestValues[0] && moeRequestValues[1]) { - var requestData = moeRequestValues[0]; - var mergedReports = flattenArray(moeRequestValues[1]); - requestData.viewsInfo = mergedReports; - requestData.viewsCount = mergedReports.length; - return requestData; + var requestData = moeRequestValues[0]; + var mergedReports = flattenArray(moeRequestValues[1]); + requestData.viewsInfo = mergedReports; + requestData.viewsCount = mergedReports.length; + return requestData; } return; - }); } /** From 3a6a1c01e6afb625429bb1d47293178deabf8f24 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Mon, 11 Nov 2024 14:23:34 +0530 Subject: [PATCH 04/12] feat(extension): added comments for web push support in chrome extension --- chrome-extension/Readme | 11 +++++++++++ chrome-extension/background.js | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 chrome-extension/Readme diff --git a/chrome-extension/Readme b/chrome-extension/Readme new file mode 100644 index 00000000..acd9b54c --- /dev/null +++ b/chrome-extension/Readme @@ -0,0 +1,11 @@ +WebSDK and Web Push in Chrome Exension +1. Make sure to integrate webSDK to your chrome extension + - Download the latest code from https://cdn.moengage.com/webpush/moe_webSdk.min.latest.js + - Create a new file name webSDK.min.js and save code inside it. + - Inject that script to your extension project. + - Initialize SDK after webSDK.min.js script exection as shared on popup.js +2. To use Web Push notification + - For Web Push notification manifest_version: 3 is required. + - SDK required ["notifications", "storage"] Permission which you have to add in you manifest.json file. + - Make sure to download the moengage chrome extesnion service worker code from https://cdn.moengage.com/webpush/beta/serviceworker_chrome_ext_cdn.js. + - Use that code inside your background.js file. \ No newline at end of file diff --git a/chrome-extension/background.js b/chrome-extension/background.js index a91cf2d6..717cdc97 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -2,6 +2,11 @@ * moengage-web-sdk-serviceworker v{{ VERSION }} * (c) MoEngage Inc. http://moengage.com */ + +// Download the service worker code from https://cdn.moengage.com/webpush/beta/serviceworker_chrome_ext_cdn.js +// Add that code in your background.js file +// Use that code to register the service worker in your chrome extension + var MoengageSW = (function(self) { var baseDomain = { env: 'sdk-01.moengage.com', From 83d516f49eaf865d60ee1ed775ac99dc5dcde295 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Tue, 12 Nov 2024 17:15:28 +0530 Subject: [PATCH 05/12] fix(web push): updated service worker code --- chrome-extension/background.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 717cdc97..a02d7fcc 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -107,7 +107,12 @@ var MoengageSW = (function(self) { // Iterates all data in a specified chrome.storage area function iterateData(data, callback) { return new Promise((resolve, reject) => { - resolve(Object.keys(data).map(key => callback(key, data[key]))); + for (let key of Object.keys(data)) { + let result = callback(key, data[key]); + if (result !== undefined) { + resolve(result) ; // Return the response from the callback + } + } }); } @@ -116,7 +121,6 @@ var MoengageSW = (function(self) { const MAX_DAYS_CAMPAIGN_SAVE = 28; var init = async function() { - console.log('Init Function call'); await resetStorageData(); self.addEventListener('install', onInstall); self.addEventListener('activate', onActivate); @@ -129,12 +133,10 @@ var MoengageSW = (function(self) { }; function onInstall(event) { - console.log('Service Worker onInstall'); event.waitUntil(self.skipWaiting()); } function onActivate(event) { - console.log('Service Worker OnActive'); event.waitUntil(self.clients.claim()); } @@ -150,7 +152,6 @@ var MoengageSW = (function(self) { } async function onPush(event) { - console.log('Service Worker OnPush'); if (!(self.Notification && self.Notification.permission === 'granted')) { return; } @@ -535,7 +536,6 @@ var MoengageSW = (function(self) { * Background sync supported browsers will replay in periodic intervals till promise is resolved */ function onSync(event) { - console.log('Service Worker OnSync'); if (event.tag === 'moe_offline_data_sync') { event.waitUntil( openDatabaseAndReplayMOERequests().then(function(message) { From cfdc5536817bfcfd049840fd92c3846feef1e719 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Wed, 13 Nov 2024 16:34:23 +0530 Subject: [PATCH 06/12] feat(Web push): updated service worker code --- chrome-extension/background.js | 495 +++++++++++---------------------- 1 file changed, 163 insertions(+), 332 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index a02d7fcc..2e93f1b1 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -3,69 +3,68 @@ * (c) MoEngage Inc. http://moengage.com */ -// Download the service worker code from https://cdn.moengage.com/webpush/beta/serviceworker_chrome_ext_cdn.js +// Download the service worker code from https://cdn.moengage.com/release/{Your_DC}/versions/2/serviceworker_chrome_ext_cdn.js // Add that code in your background.js file // Use that code to register the service worker in your chrome extension -var MoengageSW = (function(self) { +var MoengageSW = (function (self) { var baseDomain = { env: 'sdk-01.moengage.com', - get: function() { + get: function () { return 'https://' + baseDomain.env; }, - set: function(env) { + set: function (env) { baseDomain.env = env; } }; var URLS = { - addReport: function() { + addReport: function () { return baseDomain.get() + '/v2/report/add'; }, - batch: function() { + batch: function () { return baseDomain.get() + '/v2/sdk/report/'; }, FCM_END_POINT: 'https://fcm.googleapis.com/fcm/send/', - MOZILLA_END_POINT: 'https://updates.push.services.mozilla.com/wpush/v2/', - EDGE_END_POINT: 'https://wns2-pn1p.notify.windows.com/w/?token=', - SAFARI_END_POINT: 'https://web.push.apple.com/' }; async function setStoreData(key, value) { - return new Promise((resolve, reject) => { - chrome.storage.local.set({ [key]: value }, () => { - if (chrome.runtime.lastError) { - reject(new Error(chrome.runtime.lastError)); - } else { - resolve(); - } - }); + return new Promise((resolve, reject) => { + chrome.storage.local.set({ + [key]: value + }, () => { + if (chrome.runtime.lastError) { + reject(new Error(chrome.runtime.lastError)); + } else { + resolve(); + } }); - } + }); + } // To get items with async/await async function getStoreData(key) { - return new Promise((resolve, reject) => { - chrome.storage.local.get([key], (result) => { - if (chrome.runtime.lastError) { - reject(new Error(chrome.runtime.lastError)); - } else { - resolve(result[key]); - } - }); + return new Promise((resolve, reject) => { + chrome.storage.local.get([key], (result) => { + if (chrome.runtime.lastError) { + reject(new Error(chrome.runtime.lastError)); + } else { + resolve(result[key]); + } }); + }); } async function removeStoreData(key) { - return new Promise((resolve, reject) => { - chrome.storage.local.remove(key, () => { - if (chrome.runtime.lastError) { - reject(new Error(chrome.runtime.lastError)); - } else { - resolve(); - } - }); + return new Promise((resolve, reject) => { + chrome.storage.local.remove(key, () => { + if (chrome.runtime.lastError) { + reject(new Error(chrome.runtime.lastError)); + } else { + resolve(); + } }); + }); } async function getCampaignData(key) { @@ -94,24 +93,18 @@ var MoengageSW = (function(self) { return false; } - async function getOfflineStoreData(key) { - const data = (await getStoreData('offline_data')) || {}; - return data[key]; - } - async function resetStorageData(params) { await removeStoreData('moe_backup'); await removeStoreData('reportParams'); - await removeStoreData('offline_data'); } // Iterates all data in a specified chrome.storage area function iterateData(data, callback) { return new Promise((resolve, reject) => { for (let key of Object.keys(data)) { - let result = callback(key, data[key]); - if (result !== undefined) { - resolve(result) ; // Return the response from the callback - } + let result = callback(key, data[key]); + if (result !== undefined) { + resolve(result); // Return the response from the callback + } } }); } @@ -120,7 +113,7 @@ var MoengageSW = (function(self) { // FCM follow 28 days. const MAX_DAYS_CAMPAIGN_SAVE = 28; - var init = async function() { + var init = async function () { await resetStorageData(); self.addEventListener('install', onInstall); self.addEventListener('activate', onActivate); @@ -128,8 +121,6 @@ var MoengageSW = (function(self) { self.addEventListener('push', onPush); self.addEventListener('notificationclick', onNotificationClick); self.addEventListener('notificationclose', onNotificationClose); - self.addEventListener('sync', onSync); - initOfflineSync(); }; function onInstall(event) { @@ -144,7 +135,7 @@ var MoengageSW = (function(self) { if (event.data) { if (event.data.app_id) { await setStoreData('reportParams', event); - if (event.data.environment) { + if (event.data && event.data.environment) { baseDomain.set(event.data.environment); } } @@ -160,119 +151,116 @@ var MoengageSW = (function(self) { var idbData = {}; event.waitUntil( getStoreData('reportParams') - .then(function(res) { - if (res && res.data) { - idbData = res.data; - if (res.data.environment) { - baseDomain.set(res.data.environment); - } + .then(function (res) { + if (res && res.data) { + idbData = res.data; + if (res.data && res.data.environment) { + baseDomain.set(res.data.environment); } - return; - }) - .then(function() { - try { - var jsonPayload = event.data.json(); - if (jsonPayload) { - return jsonPayload; - } - } catch (err) { - console.error( - 'payload not received or has some errors in Moengage Push' - ); + } + return; + }) + .then(function () { + try { + var jsonPayload = event.data.json(); + if (jsonPayload) { + return jsonPayload; } - }) - .then(async function(data) { - var payload = data.payload; - if (!(payload && payload.moe_cid_attr)) return; - if (data.cid) { - campaignId = data.cid; - const isCampaigTriggered = await isCampaignAlreadyTriggered( - campaignId + } catch (err) { + console.error( + 'payload not received or has some errors in Moengage Push' + ); + } + }) + .then(async function (data) { + var payload = data.payload; + if (!(payload && payload.moe_cid_attr)) return; + if (data.cid) { + campaignId = data.cid; + const isCampaigTriggered = await isCampaignAlreadyTriggered( + campaignId + ); + if (isCampaigTriggered) { + throw new Error( + `The campaign ${campaignId} has already been executed.` ); - if (isCampaigTriggered) { - throw new Error( - `The campaign ${campaignId} has already been executed.` - ); - } - var campaignBackup = { - cid: campaignId - }; - - if (payload) { - campaignBackup = { - cid: campaignId, - title: payload.title, - message: payload.message, - actions: payload.actions, - image: payload.image, - moe_cid_attr: payload.moe_cid_attr, - timestamp: Date.now() - }; - } - - await setCampaingData(campaignId, campaignBackup); } + var campaignBackup = { + cid: campaignId + }; - if (!payload || !payload.title || !payload.message) { - trackEvent( - 'MOE_NO_PAYLOAD_WEB', - { - cid: data.cid - }, - 0 - ); - console.error('Moengage - Web Push payload error'); - return showNotificationForError('Welcome', { - body: 'Something unexpected happened', - requireInteraction: false - }); + if (payload) { + campaignBackup = { + cid: campaignId, + title: payload.title, + message: payload.message, + actions: payload.actions, + image: payload.image, + moe_cid_attr: payload.moe_cid_attr, + timestamp: Date.now() + }; } - var campaign_id; - var campaign_name; - try { - campaign_id = payload.moe_cid_attr.moe_campaign_id; - campaign_name = payload.moe_cid_attr.moe_campaign_name; - } catch (err) { - throw new Error('cannot get campaign ID or campaign Name.'); - } + await setCampaingData(campaignId, campaignBackup); + } + if (!payload || !payload.title || !payload.message) { trackEvent( - 'NOTIFICATION_RECEIVED_WEB_MOE', - { - cid: campaignId, - moe_campaign_id: campaign_id, - moe_campaign_name: campaign_name, - ...payload.moe_cid_attr + 'MOE_NO_PAYLOAD_WEB', { + cid: data.cid }, - 1 + 0 ); - - var params = { - body: payload.message, - icon: payload.icon, - tag: data.cid || 'moe-id', - badge: payload.badge, - data: { - url: payload.urlToOpen, - actions: payload.actions, - cid: campaignId - }, - requireInteraction: - (payload && !JSON.parse(data.payload.reqInteract)) || false, - actions: payload.actions, - image: payload.image - }; - - return showNotification(payload.title, params); - }) - .catch(function(err) { - console.error('Moengage Service Worker Error - ', err); + console.error('Moengage - Web Push payload error'); return showNotificationForError('Welcome', { body: 'Something unexpected happened', requireInteraction: false }); - }) + } + + var campaign_id; + var campaign_name; + try { + campaign_id = payload.moe_cid_attr.moe_campaign_id; + campaign_name = payload.moe_cid_attr.moe_campaign_name; + } catch (err) { + throw new Error('cannot get campaign ID or campaign Name.'); + } + + trackEvent( + 'NOTIFICATION_RECEIVED_WEB_MOE', { + cid: campaignId, + moe_campaign_id: campaign_id, + moe_campaign_name: campaign_name, + ...payload.moe_cid_attr + }, + 1 + ); + + var params = { + body: payload.message, + icon: payload.icon, + tag: data.cid || 'moe-id', + badge: payload.badge, + data: { + url: payload.urlToOpen, + actions: payload.actions, + cid: campaignId + }, + requireInteraction: (payload && !JSON.parse(data.payload.reqInteract)) || false, + actions: payload.actions, + image: payload.image + }; + + return showNotification(payload.title, params); + }) + .catch(function (err) { + console.error('Moengage Service Worker Error - ', err); + return showNotificationForError('Welcome', { + body: 'Something unexpected happened', + requireInteraction: false + }); + }) ); } @@ -284,7 +272,7 @@ var MoengageSW = (function(self) { throw new Error('Existing campaign not present in indexedDB'); } else { const data = await getCampaignData(); - iterateData(data, function(dbCampaignId) { + iterateData(data, function (dbCampaignId) { if (campaignId === dbCampaignId) { return true; } @@ -300,7 +288,7 @@ var MoengageSW = (function(self) { async function removeOldCampaignsFromIndexedDB() { const data = await getCampaignData(); - iterateData(data, async function(campaignId, campaign) { + iterateData(data, async function (campaignId, campaign) { const now = Date.now(); const timeDiff = (now - campaign.timestamp) / (1000 * 60 * 60 * 24); if (timeDiff > MAX_DAYS_CAMPAIGN_SAVE) { @@ -343,9 +331,9 @@ var MoengageSW = (function(self) { } } - var eventTracker = new Promise(async function(res) { + var eventTracker = new Promise(async function (res) { const data = await getCampaignData(); - iterateData(data, async function(campaignId, campaign) { + iterateData(data, async function (campaignId, campaign) { if (campaignId == notificationData.cid) { var campaign_id; var campaign_name; @@ -356,8 +344,7 @@ var MoengageSW = (function(self) { throw new Error(err); } trackEvent( - 'NOTIFICATION_CLICKED_WEB_MOE', - { + 'NOTIFICATION_CLICKED_WEB_MOE', { cid: campaign.cid, button: notificationTitle || void 0, moe_campaign_id: campaign_id, @@ -369,7 +356,7 @@ var MoengageSW = (function(self) { await removeCampaignData(campaignId); return campaignId; } - }).then(function(result) { + }).then(function (result) { console.info('Web Push Campaign clicked: ', result); res(); }); @@ -377,27 +364,27 @@ var MoengageSW = (function(self) { event.waitUntil( getStoreData('reportParams') - .then(function(res) { - if (res.data.environment) { - baseDomain.set(res.data.environment); - } - return; - }) - .then(function() { - return Promise.all([clickResponsePromise, eventTracker]); - }) + .then(function (res) { + if (res.data && res.data.environment) { + baseDomain.set(res.data.environment); + } + return; + }) + .then(function () { + return Promise.all([clickResponsePromise, eventTracker]); + }) ); } async function onNotificationClose(event) { var notificationData = event.notification.data; const data = await getCampaignData(); - iterateData(data, function(campaignId, campaign) { + iterateData(data, function (campaignId, campaign) { if (campaignId == notificationData.cid) { // moeCampaignsDB.removeItem(campaignId); return campaignId; } - }).then(function(result) { + }).then(function (result) { console.info('Web Push Campaign closed: ', result); }); } @@ -406,36 +393,22 @@ var MoengageSW = (function(self) { var endpoint = subscriptionDetails.endpoint; if (endpoint.indexOf(URLS.FCM_END_POINT) === 0) { return endpoint.replace(URLS.FCM_END_POINT, ''); - } else if (endpoint.indexOf(URLS.MOZILLA_END_POINT) === 0) { - return endpoint.replace(URLS.MOZILLA_END_POINT, ''); - } else if (endpoint.indexOf(URLS.SAFARI_END_POINT) === 0) { - return endpoint.replace(URLS.SAFARI_END_POINT, ''); - } else if (endpoint.indexOf(URLS.EDGE_END_POINT) === 0) { - return endpoint.replace(URLS.EDGE_END_POINT, ''); } return subscriptionDetails.subscriptionId; } - function constructGet(url, params) { - url = url + '?'; - for (var key in params) { - url += key + '=' + params[key] + '&'; - } - return url; - } - function showNotification(title, data) { return self.registration.showNotification(title, data); } function showNotificationForError(title, data) { - return self.registration.showNotification(title, data).then(function() { + return self.registration.showNotification(title, data).then(function () { setTimeout(closeNotifications, 2000); }); } function closeNotifications() { - self.registration.getNotifications().then(function(notifications) { + self.registration.getNotifications().then(function (notifications) { for (var i = 0; i < notifications.length; ++i) { notifications[i].close(); } @@ -443,7 +416,7 @@ var MoengageSW = (function(self) { } function trackEvent(eventName, attrs, flag, extraKeys = {}) { - getStoreData('reportParams').then(function(res) { + getStoreData('reportParams').then(function (res) { if (!res) { return; } @@ -458,7 +431,7 @@ var MoengageSW = (function(self) { self.registration.pushManager .getSubscription() - .then(function(subscription) { + .then(function (subscription) { if (subscription) { var subscriptionId = splitEndPointSubscription(subscription); if (subscriptionId) { @@ -480,21 +453,19 @@ var MoengageSW = (function(self) { request_time: new Date().toISOString() }, viewsCount: 1, - viewsInfo: [ - { - EVENT_ACTION: eventName, - EVENT_ATTRS: attrs, - EVENT_G_TIME: new Date().getTime().toString(), - EVENT_L_TIME: convertDateToDateMonthYearFormat() - } - ], + viewsInfo: [{ + EVENT_ACTION: eventName, + EVENT_ATTRS: attrs, + EVENT_G_TIME: new Date().getTime().toString(), + EVENT_L_TIME: convertDateToDateMonthYearFormat() + }], ...extraKeys }; fetch(URLS.batch() + data.app_id, { method: 'POST', body: JSON.stringify(payload) - }).then(function(response) { + }).then(function (response) { return response.json(); }); }); @@ -531,149 +502,9 @@ var MoengageSW = (function(self) { ); } - /** - * Sync event will be registered incase of offline mode - * Background sync supported browsers will replay in periodic intervals till promise is resolved - */ - function onSync(event) { - if (event.tag === 'moe_offline_data_sync') { - event.waitUntil( - openDatabaseAndReplayMOERequests().then(function(message) { - // callback on success - }) - ); - } - } - - /** - * Merges multiple batch reports from offline db - */ - function mergeMOEReports() { - return new Promise(function(resolve) { - return Object.keys(getStoreData('offline_data')) - .then(function(keys) { - return keys; - }) - .then(function(keys) { - return new Promise(function() { - var promises = []; - keys.map(function(key) { - if (key !== 'requestMetaData') { - getOfflineStoreData(key).then(res => { - promises.push(getOfflineStoreData(res)); - }); - } - }); - Promise.all(promises).then(function(reports) { - resolve(reports); - }); - }); - }); - }); - } - - /** - * Flattens the array - */ - function flattenArray(reports) { - return reports.reduce(function(acc, report) { - return Array.isArray(report) - ? acc.concat(flattenArray(report)) - : acc.concat(report); - }, []); - } - - /** - * Reterives API request metadata from offline db - */ - async function getRequestMetaData() { - const requestMetaData = await getStoreData('requestMetaData'); - return requestMetaData; - } - - /** - * Creates Report Adf request object - */ - async function requestPayload() { - const moeRequestValues = await Promise.all([getRequestMetaData(), mergeMOEReports()]); - if (moeRequestValues[0] && moeRequestValues[1]) { - var requestData = moeRequestValues[0]; - var mergedReports = flattenArray(moeRequestValues[1]); - requestData.viewsInfo = mergedReports; - requestData.viewsCount = mergedReports.length; - return requestData; - } - return; - } - - /** - * Replays failed report_add requests in a single batch - * Fetches offline data from indexdb - */ - function openDatabaseAndReplayMOERequests() { - return new Promise(function(resolve, reject) { - requestPayload() - .then(function(reports) { - if (!reports) { - resolve('No pending requests to replay'); - } else { - return fetch(URLS.batch() + reports.query_params.app_id, { - method: 'POST', - body: JSON.stringify(reports) - }) - .then(function(response) { - return response.json(); - }) - .then(function(response) { - if (response.status !== 'success') { - throw new Error(); - } - return removeStoreData('offline_data').then(function() { - resolve( - 'successfully replayed failed requests and cleared db' - ); - }); - }); - } - }) - .catch(function(err) { - reject('Replaying failed.', err); - }); - }); - } - - /** - * Browsers that won't support background sync will replay when service worker starts. - * Fallback strategy - */ - function initOfflineSync() { - getStoreData('reportParams').then(function(res) { - if ( - res && - res.data && - (res.data.isBatchingEnabled === 'allowed' || - res.data.isBatchingEnabled === true) - ) { - openDatabaseAndReplayMOERequests() - .then(function(message) { - console.log(message); - }) - .catch(function(message) { - console.log(message); - }); - } - }); - } - return { init: init }; })(self); -MoengageSW.init(); - -self.addEventListener('fetch', event => { - // This is a dummy event listener - // just to pass the PWA installation criteria on - // some browsers -}); +MoengageSW.init(); \ No newline at end of file From 66735b671ef437f5e8a9546a5c9b85460e545d5d Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Wed, 13 Nov 2024 18:16:34 +0530 Subject: [PATCH 07/12] feat(Web push): updated service worker code --- chrome-extension/background.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 2e93f1b1..6892536e 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -135,7 +135,7 @@ var MoengageSW = (function (self) { if (event.data) { if (event.data.app_id) { await setStoreData('reportParams', event); - if (event.data && event.data.environment) { + if (event.data.environment) { baseDomain.set(event.data.environment); } } @@ -154,7 +154,7 @@ var MoengageSW = (function (self) { .then(function (res) { if (res && res.data) { idbData = res.data; - if (res.data && res.data.environment) { + if (res.data.environment) { baseDomain.set(res.data.environment); } } @@ -365,7 +365,7 @@ var MoengageSW = (function (self) { event.waitUntil( getStoreData('reportParams') .then(function (res) { - if (res.data && res.data.environment) { + if (res && res.data && res.data.environment) { baseDomain.set(res.data.environment); } return; @@ -417,7 +417,7 @@ var MoengageSW = (function (self) { function trackEvent(eventName, attrs, flag, extraKeys = {}) { getStoreData('reportParams').then(function (res) { - if (!res) { + if (!res || !res.data) { return; } var data = res.data; From a0d3a0b110ce4acf1bd84ae08fe5c7e22df52a96 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Wed, 13 Nov 2024 18:31:52 +0530 Subject: [PATCH 08/12] feat(Web push): updated service worker code --- chrome-extension/background.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 6892536e..b8cec342 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -117,7 +117,7 @@ var MoengageSW = (function (self) { await resetStorageData(); self.addEventListener('install', onInstall); self.addEventListener('activate', onActivate); - chrome.runtime.onMessage.addListener(onMessage); + self.addEventListener('message', onMessage); self.addEventListener('push', onPush); self.addEventListener('notificationclick', onNotificationClick); self.addEventListener('notificationclose', onNotificationClose); From e55ff5f7730fa19f5df5a6d06a9f0e3b7d3c5217 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Wed, 13 Nov 2024 18:43:49 +0530 Subject: [PATCH 09/12] feat(Web push): updated service worker code --- chrome-extension/background.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index b8cec342..cb14d47c 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -35,7 +35,7 @@ var MoengageSW = (function (self) { if (chrome.runtime.lastError) { reject(new Error(chrome.runtime.lastError)); } else { - resolve(); + resolve(value); } }); }); @@ -134,10 +134,12 @@ var MoengageSW = (function (self) { async function onMessage(event) { if (event.data) { if (event.data.app_id) { - await setStoreData('reportParams', event); - if (event.data.environment) { - baseDomain.set(event.data.environment); - } + event.waitUntil(setStoreData('reportParams', event).then((res => { + if (res.data.environment) { + baseDomain.set(event.data.environment); + } + }))); + } } } From f362d614db13920cafaacca7bab38cad3ad15726 Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Wed, 13 Nov 2024 21:03:32 +0530 Subject: [PATCH 10/12] feat(webPush): updated sw file --- chrome-extension/background.js | 51 +++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index cb14d47c..cb8c883f 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -93,7 +93,7 @@ var MoengageSW = (function (self) { return false; } - async function resetStorageData(params) { + async function resetStorageData() { await removeStoreData('moe_backup'); await removeStoreData('reportParams'); } @@ -115,33 +115,52 @@ var MoengageSW = (function (self) { var init = async function () { await resetStorageData(); - self.addEventListener('install', onInstall); - self.addEventListener('activate', onActivate); - self.addEventListener('message', onMessage); + chrome.runtime.onInstalled.addListener(onInstall); + chrome.runtime.onStartup.addListener(onActivate); + chrome.runtime.onMessage.addListener(onMessage); self.addEventListener('push', onPush); self.addEventListener('notificationclick', onNotificationClick); self.addEventListener('notificationclose', onNotificationClose); }; function onInstall(event) { - event.waitUntil(self.skipWaiting()); + if (details.reason === 'install') { + console.log('Extension installed'); + } else if (details.reason === 'update') { + console.log('Extension updated'); + } } function onActivate(event) { - event.waitUntil(self.clients.claim()); + console.log('Service worker activated'); + // Claim any clients immediately + self.clients.claim(); } - async function onMessage(event) { - if (event.data) { - if (event.data.app_id) { - event.waitUntil(setStoreData('reportParams', event).then((res => { - if (res.data.environment) { - baseDomain.set(event.data.environment); + function onMessage(message, sender, sendResponse) { + const asyncOperation = new Promise(async (resolve, reject) => { + if (message.data) { + try { + await setStoreData('reportParams', message); + if (message.data.environment) { + baseDomain.set(message.data.environment); } - }))); - + resolve(); + } catch (error) { + reject(error); + } + } else { + resolve(); } - } + }); + + asyncOperation.then(() => { + sendResponse({ status: 'success' }); + }).catch((error) => { + sendResponse({ status: 'error', message: error.message }); + }); + + return true; } async function onPush(event) { @@ -419,7 +438,7 @@ var MoengageSW = (function (self) { function trackEvent(eventName, attrs, flag, extraKeys = {}) { getStoreData('reportParams').then(function (res) { - if (!res || !res.data) { + if (!res) { return; } var data = res.data; From 6d8d4230870f1e10ec13cf31469c4d0fabf693ba Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Mon, 6 Jan 2025 12:26:11 +0530 Subject: [PATCH 11/12] feat(webSDK): updated background js file --- chrome-extension/background.js | 587 +++++++++++++++------------------ 1 file changed, 273 insertions(+), 314 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index cb8c883f..06b20f52 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -1,129 +1,81 @@ + /** * moengage-web-sdk-serviceworker v{{ VERSION }} * (c) MoEngage Inc. http://moengage.com */ -// Download the service worker code from https://cdn.moengage.com/release/{Your_DC}/versions/2/serviceworker_chrome_ext_cdn.js -// Add that code in your background.js file -// Use that code to register the service worker in your chrome extension +/*! + localForage -- Offline Storage, Improved + Version 1.10.0 + https://localforage.github.io/localForage + (c) 2013-2017 Mozilla, Apache License 2.0 +*/ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.localforage=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=43)}}).catch(function(){return!1})}function n(a){return"boolean"==typeof xa?va.resolve(xa):m(a).then(function(a){return xa=a})}function o(a){var b=ya[a.name],c={};c.promise=new va(function(a,b){c.resolve=a,c.reject=b}),b.deferredOperations.push(c),b.dbReady?b.dbReady=b.dbReady.then(function(){return c.promise}):b.dbReady=c.promise}function p(a){var b=ya[a.name],c=b.deferredOperations.pop();if(c)return c.resolve(),c.promise}function q(a,b){var c=ya[a.name],d=c.deferredOperations.pop();if(d)return d.reject(b),d.promise}function r(a,b){return new va(function(c,d){if(ya[a.name]=ya[a.name]||B(),a.db){if(!b)return c(a.db);o(a),a.db.close()}var e=[a.name];b&&e.push(a.version);var f=ua.open.apply(ua,e);b&&(f.onupgradeneeded=function(b){var c=f.result;try{c.createObjectStore(a.storeName),b.oldVersion<=1&&c.createObjectStore(wa)}catch(c){if("ConstraintError"!==c.name)throw c;console.warn('The database "'+a.name+'" has been upgraded from version '+b.oldVersion+" to version "+b.newVersion+', but the storage "'+a.storeName+'" already exists.')}}),f.onerror=function(a){a.preventDefault(),d(f.error)},f.onsuccess=function(){var b=f.result;b.onversionchange=function(a){a.target.close()},c(b),p(a)}})}function s(a){return r(a,!1)}function t(a){return r(a,!0)}function u(a,b){if(!a.db)return!0;var c=!a.db.objectStoreNames.contains(a.storeName),d=a.versiona.db.version;if(d&&(a.version!==b&&console.warn('The database "'+a.name+"\" can't be downgraded from version "+a.db.version+" to version "+a.version+"."),a.version=a.db.version),e||c){if(c){var f=a.db.version+1;f>a.version&&(a.version=f)}return!0}return!1}function v(a){return new va(function(b,c){var d=new FileReader;d.onerror=c,d.onloadend=function(c){var d=btoa(c.target.result||"");b({__local_forage_encoded_blob:!0,data:d,type:a.type})},d.readAsBinaryString(a)})}function w(a){return g([l(atob(a.data))],{type:a.type})}function x(a){return a&&a.__local_forage_encoded_blob}function y(a){var b=this,c=b._initReady().then(function(){var a=ya[b._dbInfo.name];if(a&&a.dbReady)return a.dbReady});return i(c,a,a),c}function z(a){o(a);for(var b=ya[a.name],c=b.forages,d=0;d0&&(!a.db||"InvalidStateError"===e.name||"NotFoundError"===e.name))return va.resolve().then(function(){if(!a.db||"NotFoundError"===e.name&&!a.db.objectStoreNames.contains(a.storeName)&&a.version<=a.db.version)return a.db&&(a.version=a.db.version+1),t(a)}).then(function(){return z(a).then(function(){A(a,b,c,d-1)})}).catch(c);c(e)}}function B(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function C(a){function b(){return va.resolve()}var c=this,d={db:null};if(a)for(var e in a)d[e]=a[e];var f=ya[d.name];f||(f=B(),ya[d.name]=f),f.forages.push(c),c._initReady||(c._initReady=c.ready,c.ready=y);for(var g=[],h=0;h>4,k[i++]=(15&d)<<4|e>>2,k[i++]=(3&e)<<6|63&f;return j}function O(a){var b,c=new Uint8Array(a),d="";for(b=0;b>2],d+=Da[(3&c[b])<<4|c[b+1]>>4],d+=Da[(15&c[b+1])<<2|c[b+2]>>6],d+=Da[63&c[b+2]];return c.length%3==2?d=d.substring(0,d.length-1)+"=":c.length%3==1&&(d=d.substring(0,d.length-2)+"=="),d}function P(a,b){var c="";if(a&&(c=Ua.call(a)),a&&("[object ArrayBuffer]"===c||a.buffer&&"[object ArrayBuffer]"===Ua.call(a.buffer))){var d,e=Ga;a instanceof ArrayBuffer?(d=a,e+=Ia):(d=a.buffer,"[object Int8Array]"===c?e+=Ka:"[object Uint8Array]"===c?e+=La:"[object Uint8ClampedArray]"===c?e+=Ma:"[object Int16Array]"===c?e+=Na:"[object Uint16Array]"===c?e+=Pa:"[object Int32Array]"===c?e+=Oa:"[object Uint32Array]"===c?e+=Qa:"[object Float32Array]"===c?e+=Ra:"[object Float64Array]"===c?e+=Sa:b(new Error("Failed to get type for BinaryArray"))),b(e+O(d))}else if("[object Blob]"===c){var f=new FileReader;f.onload=function(){var c=Ea+a.type+"~"+O(this.result);b(Ga+Ja+c)},f.readAsArrayBuffer(a)}else try{b(JSON.stringify(a))}catch(c){console.error("Couldn't convert value into a JSON string: ",a),b(null,c)}}function Q(a){if(a.substring(0,Ha)!==Ga)return JSON.parse(a);var b,c=a.substring(Ta),d=a.substring(Ha,Ta);if(d===Ja&&Fa.test(c)){var e=c.match(Fa);b=e[1],c=c.substring(e[0].length)}var f=N(c);switch(d){case Ia:return f;case Ja:return g([f],{type:b});case Ka:return new Int8Array(f);case La:return new Uint8Array(f);case Ma:return new Uint8ClampedArray(f);case Na:return new Int16Array(f);case Pa:return new Uint16Array(f);case Oa:return new Int32Array(f);case Qa:return new Uint32Array(f);case Ra:return new Float32Array(f);case Sa:return new Float64Array(f);default:throw new Error("Unkown type: "+d)}}function R(a,b,c,d){a.executeSql("CREATE TABLE IF NOT EXISTS "+b.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],c,d)}function S(a){var b=this,c={db:null};if(a)for(var d in a)c[d]="string"!=typeof a[d]?a[d].toString():a[d];var e=new va(function(a,d){try{c.db=openDatabase(c.name,String(c.version),c.description,c.size)}catch(a){return d(a)}c.db.transaction(function(e){R(e,c,function(){b._dbInfo=c,a()},function(a,b){d(b)})},d)});return c.serializer=Va,e}function T(a,b,c,d,e,f){a.executeSql(c,d,e,function(a,g){g.code===g.SYNTAX_ERR?a.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[b.storeName],function(a,h){h.rows.length?f(a,g):R(a,b,function(){a.executeSql(c,d,e,f)},f)},f):f(a,g)},f)}function U(a,b){var c=this;a=j(a);var d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"SELECT * FROM "+e.storeName+" WHERE key = ? LIMIT 1",[a],function(a,c){var d=c.rows.length?c.rows.item(0).value:null;d&&(d=e.serializer.deserialize(d)),b(d)},function(a,b){d(b)})})}).catch(d)});return h(d,b),d}function V(a,b){var c=this,d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"SELECT * FROM "+e.storeName,[],function(c,d){for(var f=d.rows,g=f.length,h=0;h0)return void f(W.apply(e,[a,h,c,d-1]));g(b)}})})}).catch(g)});return h(f,c),f}function X(a,b,c){return W.apply(this,[a,b,c,1])}function Y(a,b){var c=this;a=j(a);var d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"DELETE FROM "+e.storeName+" WHERE key = ?",[a],function(){b()},function(a,b){d(b)})})}).catch(d)});return h(d,b),d}function Z(a){var b=this,c=new va(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){T(b,d,"DELETE FROM "+d.storeName,[],function(){a()},function(a,b){c(b)})})}).catch(c)});return h(c,a),c}function $(a){var b=this,c=new va(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){T(b,d,"SELECT COUNT(key) as c FROM "+d.storeName,[],function(b,c){var d=c.rows.item(0).c;a(d)},function(a,b){c(b)})})}).catch(c)});return h(c,a),c}function _(a,b){var c=this,d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"SELECT key FROM "+e.storeName+" WHERE id = ? LIMIT 1",[a+1],function(a,c){var d=c.rows.length?c.rows.item(0).key:null;b(d)},function(a,b){d(b)})})}).catch(d)});return h(d,b),d}function aa(a){var b=this,c=new va(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){T(b,d,"SELECT key FROM "+d.storeName,[],function(b,c){for(var d=[],e=0;e '__WebKitDatabaseInfoTable__'",[],function(c,d){for(var e=[],f=0;f0}function ha(a){var b=this,c={};if(a)for(var d in a)c[d]=a[d];return c.keyPrefix=ea(a,b._defaultConfig),ga()?(b._dbInfo=c,c.serializer=Va,va.resolve()):va.reject()}function ia(a){var b=this,c=b.ready().then(function(){for(var a=b._dbInfo.keyPrefix,c=localStorage.length-1;c>=0;c--){var d=localStorage.key(c);0===d.indexOf(a)&&localStorage.removeItem(d)}});return h(c,a),c}function ja(a,b){var c=this;a=j(a);var d=c.ready().then(function(){var b=c._dbInfo,d=localStorage.getItem(b.keyPrefix+a);return d&&(d=b.serializer.deserialize(d)),d});return h(d,b),d}function ka(a,b){var c=this,d=c.ready().then(function(){for(var b=c._dbInfo,d=b.keyPrefix,e=d.length,f=localStorage.length,g=1,h=0;h=0;b--){var c=localStorage.key(b);0===c.indexOf(a)&&localStorage.removeItem(c)}}):va.reject("Invalid arguments"),h(d,b),d}function ra(a,b){a[b]=function(){var c=arguments;return a.ready().then(function(){return a[b].apply(a,c)})}}function sa(){for(var a=1;a { - chrome.storage.local.set({ - [key]: value - }, () => { - if (chrome.runtime.lastError) { - reject(new Error(chrome.runtime.lastError)); - } else { - resolve(value); - } - }); - }); - } - - // To get items with async/await - - async function getStoreData(key) { - return new Promise((resolve, reject) => { - chrome.storage.local.get([key], (result) => { - if (chrome.runtime.lastError) { - reject(new Error(chrome.runtime.lastError)); - } else { - resolve(result[key]); - } - }); - }); - } - - async function removeStoreData(key) { - return new Promise((resolve, reject) => { - chrome.storage.local.remove(key, () => { - if (chrome.runtime.lastError) { - reject(new Error(chrome.runtime.lastError)); - } else { - resolve(); - } - }); - }); - } - - async function getCampaignData(key) { - const data = (await getStoreData('moe_backup')) || {}; - if (key) { - return data[key]; - } - return data; - } - - async function setCampaingData(key, value) { - const data = (await getStoreData('moe_backup')) || {}; - if (data) { - data[key] = value; - await setStoreData('moe_backup', data); - } - } - - async function removeCampaignData(key) { - const data = (await getStoreData('moe_backup')) || {}; - if (data) { - delete data[key]; - await setStoreData('moe_backup', data); - return true; - } - return false; - } - - async function resetStorageData() { - await removeStoreData('moe_backup'); - await removeStoreData('reportParams'); - } - // Iterates all data in a specified chrome.storage area - function iterateData(data, callback) { - return new Promise((resolve, reject) => { - for (let key of Object.keys(data)) { - let result = callback(key, data[key]); - if (result !== undefined) { - resolve(result); // Return the response from the callback - } - } - }); - } - + var moeReportParamsDB, moeCampaignsDB, moeOfflineDB; // we remove the campaigns saved in indexedDB after 28 days // FCM follow 28 days. const MAX_DAYS_CAMPAIGN_SAVE = 28; - var init = async function () { - await resetStorageData(); + var init = async function() { + console.log('init event'); chrome.runtime.onInstalled.addListener(onInstall); chrome.runtime.onStartup.addListener(onActivate); chrome.runtime.onMessage.addListener(onMessage); self.addEventListener('push', onPush); self.addEventListener('notificationclick', onNotificationClick); self.addEventListener('notificationclose', onNotificationClose); + await initDB(); }; - function onInstall(event) { + async function initDB() { + return new Promise(resolve => { + moeReportParamsDB = localforage.createInstance({ + driver: [localforage.INDEXEDDB], + name: 'moe_database', + storeName: 'moe_data', + }); + moeCampaignsDB = localforage.createInstance({ + driver: [localforage.INDEXEDDB], + name: 'moe_database', + storeName: 'moe_backup', + }); + moeOfflineDB = localforage.createInstance({ + driver: [localforage.INDEXEDDB], + name: 'moe_database', + storeName: 'offline_data', + }); + Promise.all([ + moeReportParamsDB.ready(), + moeCampaignsDB.ready(), + moeOfflineDB.ready(), + ]).then(resolve()); + }); + } + + function onInstall(details) { if (details.reason === 'install') { console.log('Extension installed'); } else if (details.reason === 'update') { @@ -132,38 +84,24 @@ var MoengageSW = (function (self) { } function onActivate(event) { - console.log('Service worker activated'); - // Claim any clients immediately - self.clients.claim(); + console.log('onActive event', event?.data); + + event.waitUntil(self.clients.claim()); } - function onMessage(message, sender, sendResponse) { - const asyncOperation = new Promise(async (resolve, reject) => { - if (message.data) { - try { - await setStoreData('reportParams', message); - if (message.data.environment) { - baseDomain.set(message.data.environment); - } - resolve(); - } catch (error) { - reject(error); + function onMessage(event) { + console.log('mesage event', event?.data); + if (event.data) { + if (event.data && event.data.app_id) { + moeReportParamsDB.setItem('reportParams', event); + if (event.data.environment) { + baseDomain.set(event.data.environment); } - } else { - resolve(); } - }); - - asyncOperation.then(() => { - sendResponse({ status: 'success' }); - }).catch((error) => { - sendResponse({ status: 'error', message: error.message }); - }); - - return true; + } } - async function onPush(event) { + function onPush(event) { if (!(self.Notification && self.Notification.permission === 'granted')) { return; } @@ -171,149 +109,153 @@ var MoengageSW = (function (self) { var campaignId; var idbData = {}; event.waitUntil( - getStoreData('reportParams') - .then(function (res) { - if (res && res.data) { - idbData = res.data; - if (res.data.environment) { - baseDomain.set(res.data.environment); - } - } - return; - }) - .then(function () { - try { - var jsonPayload = event.data.json(); - if (jsonPayload) { - return jsonPayload; + moeReportParamsDB + .getItem('reportParams') + .then(function(res) { + if (res && res.data) { + idbData = res.data; + if (res.data.environment) { + baseDomain.set(res.data.environment); + } } - } catch (err) { - console.error( - 'payload not received or has some errors in Moengage Push' - ); - } - }) - .then(async function (data) { - var payload = data.payload; - if (!(payload && payload.moe_cid_attr)) return; - if (data.cid) { - campaignId = data.cid; - const isCampaigTriggered = await isCampaignAlreadyTriggered( - campaignId - ); - if (isCampaigTriggered) { - throw new Error( - `The campaign ${campaignId} has already been executed.` + return; + }) + .then(function() { + try { + var jsonPayload = event.data.json(); + if (jsonPayload) { + return jsonPayload; + } + } catch (err) { + console.error( + 'payload not received or has some errors in Moengage Push', ); } - var campaignBackup = { - cid: campaignId - }; - - if (payload) { - campaignBackup = { + }) + .then(async function(data) { + var payload = data.payload; + if (!(payload && payload.moe_cid_attr)) return; + if (data.cid) { + campaignId = data.cid; + const isCampaigTriggered = await isCampaignAlreadyTriggered( + campaignId, + ); + if (isCampaigTriggered) { + throw new Error( + `The campaign ${campaignId} has already been executed.`, + ); + } + var campaignBackup = { cid: campaignId, - title: payload.title, - message: payload.message, - actions: payload.actions, - image: payload.image, - moe_cid_attr: payload.moe_cid_attr, - timestamp: Date.now() }; + + if (payload) { + campaignBackup = { + cid: campaignId, + title: payload.title, + message: payload.message, + actions: payload.actions, + image: payload.image, + moe_cid_attr: payload.moe_cid_attr, + timestamp: Date.now(), + }; + } + + moeCampaignsDB.setItem(campaignId, campaignBackup); } - await setCampaingData(campaignId, campaignBackup); - } + if (!payload || !payload.title || !payload.message) { + trackEvent( + 'MOE_NO_PAYLOAD_WEB', + { + cid: data.cid, + }, + 0, + ); + console.error('Moengage - Web Push payload error'); + return showNotificationForError('Welcome', { + body: 'Something unexpected happened', + requireInteraction: false, + }); + } + + var campaign_id; + var campaign_name; + try { + campaign_id = payload.moe_cid_attr.moe_campaign_id; + campaign_name = payload.moe_cid_attr.moe_campaign_name; + } catch (err) { + throw new Error('cannot get campaign ID or campaign Name.'); + } - if (!payload || !payload.title || !payload.message) { trackEvent( - 'MOE_NO_PAYLOAD_WEB', { - cid: data.cid + 'NOTIFICATION_RECEIVED_WEB_MOE', + { + cid: campaignId, + moe_campaign_id: campaign_id, + moe_campaign_name: campaign_name, + ...payload.moe_cid_attr, }, - 0 + 1, ); - console.error('Moengage - Web Push payload error'); + + var params = { + body: payload.message, + icon: payload.icon, + tag: data.cid || 'moe-id', + badge: payload.badge, + data: { + url: payload.urlToOpen, + actions: payload.actions, + cid: campaignId, + }, + // requireInteraction: + // (payload && !JSON.parse(data.payload.reqInteract)) || false, + actions: payload.actions, + image: payload.image, + }; + + return showNotification(payload.title, params); + }) + .catch(function(err) { + console.error('Moengage Service Worker Error - ', err); return showNotificationForError('Welcome', { body: 'Something unexpected happened', - requireInteraction: false + requireInteraction: false, }); - } - - var campaign_id; - var campaign_name; - try { - campaign_id = payload.moe_cid_attr.moe_campaign_id; - campaign_name = payload.moe_cid_attr.moe_campaign_name; - } catch (err) { - throw new Error('cannot get campaign ID or campaign Name.'); - } - - trackEvent( - 'NOTIFICATION_RECEIVED_WEB_MOE', { - cid: campaignId, - moe_campaign_id: campaign_id, - moe_campaign_name: campaign_name, - ...payload.moe_cid_attr - }, - 1 - ); - - var params = { - body: payload.message, - icon: payload.icon, - tag: data.cid || 'moe-id', - badge: payload.badge, - data: { - url: payload.urlToOpen, - actions: payload.actions, - cid: campaignId - }, - requireInteraction: (payload && !JSON.parse(data.payload.reqInteract)) || false, - actions: payload.actions, - image: payload.image - }; - - return showNotification(payload.title, params); - }) - .catch(function (err) { - console.error('Moengage Service Worker Error - ', err); - return showNotificationForError('Welcome', { - body: 'Something unexpected happened', - requireInteraction: false - }); - }) + }), ); } - async function isCampaignAlreadyTriggered(campaignId) { - try { - const campaignData = (await getStoreData('moe_backup')) || {}; - const campaignDataLength = Object.keys(campaignData).length; - if (campaignDataLength === 0) { - throw new Error('Existing campaign not present in indexedDB'); - } else { - const data = await getCampaignData(); - iterateData(data, function (dbCampaignId) { - if (campaignId === dbCampaignId) { - return true; - } - }).then(isTriggered => { - return isTriggered; - }); - } - return false; - } catch (error) { - return false; - } + function isCampaignAlreadyTriggered(campaignId) { + return moeCampaignsDB + .length() + .then(numberOfKeys => { + if (numberOfKeys === 0) { + throw new Error('Existing campaign not present in indexedDB'); + } else { + return moeCampaignsDB + .iterate(function(campaign, dbCampaignId) { + if (campaignId === dbCampaignId) { + return true; + } + }) + .then(isTriggered => { + return isTriggered; + }); + } + }) + .catch(() => { + return false; + }); } - async function removeOldCampaignsFromIndexedDB() { - const data = await getCampaignData(); - iterateData(data, async function (campaignId, campaign) { + function removeOldCampaignsFromIndexedDB() { + moeCampaignsDB.iterate(function(campaign, campaignId) { const now = Date.now(); const timeDiff = (now - campaign.timestamp) / (1000 * 60 * 60 * 24); if (timeDiff > MAX_DAYS_CAMPAIGN_SAVE) { - await removeCampaignData(campaignId); + moeCampaignsDB.removeItem(campaignId); } }); } @@ -332,7 +274,7 @@ var MoengageSW = (function (self) { notificationData.actions[0].url ) { clickResponsePromise = clients.openWindow( - notificationData.actions[0].url + notificationData.actions[0].url, ); notificationTitle = notificationData.actions[0].title; } else if ( @@ -343,7 +285,7 @@ var MoengageSW = (function (self) { notificationData.actions[1].url ) { clickResponsePromise = clients.openWindow( - notificationData.actions[1].url + notificationData.actions[1].url, ); notificationTitle = notificationData.actions[1].title; } else if (notificationData.url) { @@ -352,68 +294,78 @@ var MoengageSW = (function (self) { } } - var eventTracker = new Promise(async function (res) { - const data = await getCampaignData(); - iterateData(data, async function (campaignId, campaign) { - if (campaignId == notificationData.cid) { - var campaign_id; - var campaign_name; - try { - campaign_id = campaign.moe_cid_attr.moe_campaign_id; - campaign_name = campaign.moe_cid_attr.moe_campaign_name; - } catch (err) { - throw new Error(err); + var eventTracker = new Promise(function(res) { + moeCampaignsDB + .iterate(function(campaign, campaignId) { + if (campaignId == notificationData.cid) { + var campaign_id; + var campaign_name; + try { + campaign_id = campaign.moe_cid_attr.moe_campaign_id; + campaign_name = campaign.moe_cid_attr.moe_campaign_name; + } catch (err) { + throw new Error(err); + } + trackEvent( + 'NOTIFICATION_CLICKED_WEB_MOE', + { + cid: campaign.cid, + button: notificationTitle || void 0, + moe_campaign_id: campaign_id, + moe_campaign_name: campaign_name, + ...campaign.moe_cid_attr, + }, + 1, + ); + // moeCampaignsDB.removeItem(campaignId); + return campaignId; } - trackEvent( - 'NOTIFICATION_CLICKED_WEB_MOE', { - cid: campaign.cid, - button: notificationTitle || void 0, - moe_campaign_id: campaign_id, - moe_campaign_name: campaign_name, - ...campaign.moe_cid_attr - }, - 1 - ); - await removeCampaignData(campaignId); - return campaignId; - } - }).then(function (result) { - console.info('Web Push Campaign clicked: ', result); - res(); - }); + }) + .then(function(result) { + console.info('Web Push Campaign clicked: ', result); + res(); + }); }); event.waitUntil( - getStoreData('reportParams') - .then(function (res) { - if (res && res.data && res.data.environment) { - baseDomain.set(res.data.environment); - } - return; - }) - .then(function () { - return Promise.all([clickResponsePromise, eventTracker]); - }) + moeReportParamsDB + .getItem('reportParams') + .then(function(res) { + if (res.data.environment) { + baseDomain.set(res.data.environment); + } + return; + }) + .then(function() { + return Promise.all([clickResponsePromise, eventTracker]); + }), ); } - async function onNotificationClose(event) { + function onNotificationClose(event) { var notificationData = event.notification.data; - const data = await getCampaignData(); - iterateData(data, function (campaignId, campaign) { - if (campaignId == notificationData.cid) { - // moeCampaignsDB.removeItem(campaignId); - return campaignId; - } - }).then(function (result) { - console.info('Web Push Campaign closed: ', result); - }); + notificationData && moeCampaignsDB + .iterate(function(campaign, campaignId) { + if (campaignId == notificationData.cid) { + // moeCampaignsDB.removeItem(campaignId); + return campaignId; + } + }) + .then(function(result) { + console.info('Web Push Campaign closed: ', result); + }); } function splitEndPointSubscription(subscriptionDetails) { var endpoint = subscriptionDetails.endpoint; if (endpoint.indexOf(URLS.FCM_END_POINT) === 0) { return endpoint.replace(URLS.FCM_END_POINT, ''); + } else if (endpoint.indexOf(URLS.MOZILLA_END_POINT) === 0) { + return endpoint.replace(URLS.MOZILLA_END_POINT, ''); + } else if (endpoint.indexOf(URLS.SAFARI_END_POINT) === 0) { + return endpoint.replace(URLS.SAFARI_END_POINT, ''); + } else if (endpoint.indexOf(URLS.EDGE_END_POINT) === 0) { + return endpoint.replace(URLS.EDGE_END_POINT, ''); } return subscriptionDetails.subscriptionId; } @@ -423,13 +375,13 @@ var MoengageSW = (function (self) { } function showNotificationForError(title, data) { - return self.registration.showNotification(title, data).then(function () { + return self.registration.showNotification(title, data).then(function() { setTimeout(closeNotifications, 2000); }); } function closeNotifications() { - self.registration.getNotifications().then(function (notifications) { + self.registration.getNotifications().then(function(notifications) { for (var i = 0; i < notifications.length; ++i) { notifications[i].close(); } @@ -437,10 +389,7 @@ var MoengageSW = (function (self) { } function trackEvent(eventName, attrs, flag, extraKeys = {}) { - getStoreData('reportParams').then(function (res) { - if (!res) { - return; - } + moeReportParamsDB.getItem('reportParams').then(function(res) { var data = res.data; // var postData = { // e: eventName, @@ -452,7 +401,7 @@ var MoengageSW = (function (self) { self.registration.pushManager .getSubscription() - .then(function (subscription) { + .then(function(subscription) { if (subscription) { var subscriptionId = splitEndPointSubscription(subscription); if (subscriptionId) { @@ -471,23 +420,27 @@ var MoengageSW = (function (self) { query_params: data, meta: { bid: uuidV4(), - request_time: new Date().toISOString() + request_time: new Date().toISOString(), }, viewsCount: 1, - viewsInfo: [{ - EVENT_ACTION: eventName, - EVENT_ATTRS: attrs, - EVENT_G_TIME: new Date().getTime().toString(), - EVENT_L_TIME: convertDateToDateMonthYearFormat() - }], - ...extraKeys + viewsInfo: [ + { + EVENT_ACTION: eventName, + EVENT_ATTRS: attrs, + EVENT_G_TIME: new Date().getTime().toString(), + EVENT_L_TIME: convertDateToDateMonthYearFormat(), + }, + ], + ...extraKeys, }; fetch(URLS.batch() + data.app_id, { method: 'POST', - body: JSON.stringify(payload) - }).then(function (response) { + body: JSON.stringify(payload), + }).then(function(response) { return response.json(); + }).catch((err) => { + console.error('API Fail:', err) }); }); }); @@ -504,7 +457,7 @@ var MoengageSW = (function (self) { ( c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4))) - ).toString(16) + ).toString(16), ); } @@ -518,14 +471,20 @@ var MoengageSW = (function (self) { now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), - now.getUTCMilliseconds() - ) + now.getUTCMilliseconds(), + ), ); } return { - init: init + init: init, }; })(self); -MoengageSW.init(); \ No newline at end of file +MoengageSW.init(); + +self.addEventListener('fetch', () => { + // This is a dummy event listener + // just to pass the PWA installation criteria on + // some browsers +}); From b54238b3a175949fb2e9a7eb97189ed9c1fa07dd Mon Sep 17 00:00:00 2001 From: Aman Verma Date: Wed, 29 Jan 2025 17:32:49 +0530 Subject: [PATCH 12/12] feat(chrome-ext): updated extension code --- chrome-extension/background.js | 492 +-------------------------------- chrome-extension/manifest.json | 4 +- chrome-extension/popup.js | 5 +- chrome-extension/webSDK.min.js | 3 +- 4 files changed, 9 insertions(+), 495 deletions(-) diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 06b20f52..1d7de400 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -1,490 +1,2 @@ - -/** - * moengage-web-sdk-serviceworker v{{ VERSION }} - * (c) MoEngage Inc. http://moengage.com - */ - -/*! - localForage -- Offline Storage, Improved - Version 1.10.0 - https://localforage.github.io/localForage - (c) 2013-2017 Mozilla, Apache License 2.0 -*/ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.localforage=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=43)}}).catch(function(){return!1})}function n(a){return"boolean"==typeof xa?va.resolve(xa):m(a).then(function(a){return xa=a})}function o(a){var b=ya[a.name],c={};c.promise=new va(function(a,b){c.resolve=a,c.reject=b}),b.deferredOperations.push(c),b.dbReady?b.dbReady=b.dbReady.then(function(){return c.promise}):b.dbReady=c.promise}function p(a){var b=ya[a.name],c=b.deferredOperations.pop();if(c)return c.resolve(),c.promise}function q(a,b){var c=ya[a.name],d=c.deferredOperations.pop();if(d)return d.reject(b),d.promise}function r(a,b){return new va(function(c,d){if(ya[a.name]=ya[a.name]||B(),a.db){if(!b)return c(a.db);o(a),a.db.close()}var e=[a.name];b&&e.push(a.version);var f=ua.open.apply(ua,e);b&&(f.onupgradeneeded=function(b){var c=f.result;try{c.createObjectStore(a.storeName),b.oldVersion<=1&&c.createObjectStore(wa)}catch(c){if("ConstraintError"!==c.name)throw c;console.warn('The database "'+a.name+'" has been upgraded from version '+b.oldVersion+" to version "+b.newVersion+', but the storage "'+a.storeName+'" already exists.')}}),f.onerror=function(a){a.preventDefault(),d(f.error)},f.onsuccess=function(){var b=f.result;b.onversionchange=function(a){a.target.close()},c(b),p(a)}})}function s(a){return r(a,!1)}function t(a){return r(a,!0)}function u(a,b){if(!a.db)return!0;var c=!a.db.objectStoreNames.contains(a.storeName),d=a.versiona.db.version;if(d&&(a.version!==b&&console.warn('The database "'+a.name+"\" can't be downgraded from version "+a.db.version+" to version "+a.version+"."),a.version=a.db.version),e||c){if(c){var f=a.db.version+1;f>a.version&&(a.version=f)}return!0}return!1}function v(a){return new va(function(b,c){var d=new FileReader;d.onerror=c,d.onloadend=function(c){var d=btoa(c.target.result||"");b({__local_forage_encoded_blob:!0,data:d,type:a.type})},d.readAsBinaryString(a)})}function w(a){return g([l(atob(a.data))],{type:a.type})}function x(a){return a&&a.__local_forage_encoded_blob}function y(a){var b=this,c=b._initReady().then(function(){var a=ya[b._dbInfo.name];if(a&&a.dbReady)return a.dbReady});return i(c,a,a),c}function z(a){o(a);for(var b=ya[a.name],c=b.forages,d=0;d0&&(!a.db||"InvalidStateError"===e.name||"NotFoundError"===e.name))return va.resolve().then(function(){if(!a.db||"NotFoundError"===e.name&&!a.db.objectStoreNames.contains(a.storeName)&&a.version<=a.db.version)return a.db&&(a.version=a.db.version+1),t(a)}).then(function(){return z(a).then(function(){A(a,b,c,d-1)})}).catch(c);c(e)}}function B(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function C(a){function b(){return va.resolve()}var c=this,d={db:null};if(a)for(var e in a)d[e]=a[e];var f=ya[d.name];f||(f=B(),ya[d.name]=f),f.forages.push(c),c._initReady||(c._initReady=c.ready,c.ready=y);for(var g=[],h=0;h>4,k[i++]=(15&d)<<4|e>>2,k[i++]=(3&e)<<6|63&f;return j}function O(a){var b,c=new Uint8Array(a),d="";for(b=0;b>2],d+=Da[(3&c[b])<<4|c[b+1]>>4],d+=Da[(15&c[b+1])<<2|c[b+2]>>6],d+=Da[63&c[b+2]];return c.length%3==2?d=d.substring(0,d.length-1)+"=":c.length%3==1&&(d=d.substring(0,d.length-2)+"=="),d}function P(a,b){var c="";if(a&&(c=Ua.call(a)),a&&("[object ArrayBuffer]"===c||a.buffer&&"[object ArrayBuffer]"===Ua.call(a.buffer))){var d,e=Ga;a instanceof ArrayBuffer?(d=a,e+=Ia):(d=a.buffer,"[object Int8Array]"===c?e+=Ka:"[object Uint8Array]"===c?e+=La:"[object Uint8ClampedArray]"===c?e+=Ma:"[object Int16Array]"===c?e+=Na:"[object Uint16Array]"===c?e+=Pa:"[object Int32Array]"===c?e+=Oa:"[object Uint32Array]"===c?e+=Qa:"[object Float32Array]"===c?e+=Ra:"[object Float64Array]"===c?e+=Sa:b(new Error("Failed to get type for BinaryArray"))),b(e+O(d))}else if("[object Blob]"===c){var f=new FileReader;f.onload=function(){var c=Ea+a.type+"~"+O(this.result);b(Ga+Ja+c)},f.readAsArrayBuffer(a)}else try{b(JSON.stringify(a))}catch(c){console.error("Couldn't convert value into a JSON string: ",a),b(null,c)}}function Q(a){if(a.substring(0,Ha)!==Ga)return JSON.parse(a);var b,c=a.substring(Ta),d=a.substring(Ha,Ta);if(d===Ja&&Fa.test(c)){var e=c.match(Fa);b=e[1],c=c.substring(e[0].length)}var f=N(c);switch(d){case Ia:return f;case Ja:return g([f],{type:b});case Ka:return new Int8Array(f);case La:return new Uint8Array(f);case Ma:return new Uint8ClampedArray(f);case Na:return new Int16Array(f);case Pa:return new Uint16Array(f);case Oa:return new Int32Array(f);case Qa:return new Uint32Array(f);case Ra:return new Float32Array(f);case Sa:return new Float64Array(f);default:throw new Error("Unkown type: "+d)}}function R(a,b,c,d){a.executeSql("CREATE TABLE IF NOT EXISTS "+b.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],c,d)}function S(a){var b=this,c={db:null};if(a)for(var d in a)c[d]="string"!=typeof a[d]?a[d].toString():a[d];var e=new va(function(a,d){try{c.db=openDatabase(c.name,String(c.version),c.description,c.size)}catch(a){return d(a)}c.db.transaction(function(e){R(e,c,function(){b._dbInfo=c,a()},function(a,b){d(b)})},d)});return c.serializer=Va,e}function T(a,b,c,d,e,f){a.executeSql(c,d,e,function(a,g){g.code===g.SYNTAX_ERR?a.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[b.storeName],function(a,h){h.rows.length?f(a,g):R(a,b,function(){a.executeSql(c,d,e,f)},f)},f):f(a,g)},f)}function U(a,b){var c=this;a=j(a);var d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"SELECT * FROM "+e.storeName+" WHERE key = ? LIMIT 1",[a],function(a,c){var d=c.rows.length?c.rows.item(0).value:null;d&&(d=e.serializer.deserialize(d)),b(d)},function(a,b){d(b)})})}).catch(d)});return h(d,b),d}function V(a,b){var c=this,d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"SELECT * FROM "+e.storeName,[],function(c,d){for(var f=d.rows,g=f.length,h=0;h0)return void f(W.apply(e,[a,h,c,d-1]));g(b)}})})}).catch(g)});return h(f,c),f}function X(a,b,c){return W.apply(this,[a,b,c,1])}function Y(a,b){var c=this;a=j(a);var d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"DELETE FROM "+e.storeName+" WHERE key = ?",[a],function(){b()},function(a,b){d(b)})})}).catch(d)});return h(d,b),d}function Z(a){var b=this,c=new va(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){T(b,d,"DELETE FROM "+d.storeName,[],function(){a()},function(a,b){c(b)})})}).catch(c)});return h(c,a),c}function $(a){var b=this,c=new va(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){T(b,d,"SELECT COUNT(key) as c FROM "+d.storeName,[],function(b,c){var d=c.rows.item(0).c;a(d)},function(a,b){c(b)})})}).catch(c)});return h(c,a),c}function _(a,b){var c=this,d=new va(function(b,d){c.ready().then(function(){var e=c._dbInfo;e.db.transaction(function(c){T(c,e,"SELECT key FROM "+e.storeName+" WHERE id = ? LIMIT 1",[a+1],function(a,c){var d=c.rows.length?c.rows.item(0).key:null;b(d)},function(a,b){d(b)})})}).catch(d)});return h(d,b),d}function aa(a){var b=this,c=new va(function(a,c){b.ready().then(function(){var d=b._dbInfo;d.db.transaction(function(b){T(b,d,"SELECT key FROM "+d.storeName,[],function(b,c){for(var d=[],e=0;e '__WebKitDatabaseInfoTable__'",[],function(c,d){for(var e=[],f=0;f0}function ha(a){var b=this,c={};if(a)for(var d in a)c[d]=a[d];return c.keyPrefix=ea(a,b._defaultConfig),ga()?(b._dbInfo=c,c.serializer=Va,va.resolve()):va.reject()}function ia(a){var b=this,c=b.ready().then(function(){for(var a=b._dbInfo.keyPrefix,c=localStorage.length-1;c>=0;c--){var d=localStorage.key(c);0===d.indexOf(a)&&localStorage.removeItem(d)}});return h(c,a),c}function ja(a,b){var c=this;a=j(a);var d=c.ready().then(function(){var b=c._dbInfo,d=localStorage.getItem(b.keyPrefix+a);return d&&(d=b.serializer.deserialize(d)),d});return h(d,b),d}function ka(a,b){var c=this,d=c.ready().then(function(){for(var b=c._dbInfo,d=b.keyPrefix,e=d.length,f=localStorage.length,g=1,h=0;h=0;b--){var c=localStorage.key(b);0===c.indexOf(a)&&localStorage.removeItem(c)}}):va.reject("Invalid arguments"),h(d,b),d}function ra(a,b){a[b]=function(){var c=arguments;return a.ready().then(function(){return a[b].apply(a,c)})}}function sa(){for(var a=1;a { - moeReportParamsDB = localforage.createInstance({ - driver: [localforage.INDEXEDDB], - name: 'moe_database', - storeName: 'moe_data', - }); - moeCampaignsDB = localforage.createInstance({ - driver: [localforage.INDEXEDDB], - name: 'moe_database', - storeName: 'moe_backup', - }); - moeOfflineDB = localforage.createInstance({ - driver: [localforage.INDEXEDDB], - name: 'moe_database', - storeName: 'offline_data', - }); - Promise.all([ - moeReportParamsDB.ready(), - moeCampaignsDB.ready(), - moeOfflineDB.ready(), - ]).then(resolve()); - }); - } - - function onInstall(details) { - if (details.reason === 'install') { - console.log('Extension installed'); - } else if (details.reason === 'update') { - console.log('Extension updated'); - } - } - - function onActivate(event) { - console.log('onActive event', event?.data); - - event.waitUntil(self.clients.claim()); - } - - function onMessage(event) { - console.log('mesage event', event?.data); - if (event.data) { - if (event.data && event.data.app_id) { - moeReportParamsDB.setItem('reportParams', event); - if (event.data.environment) { - baseDomain.set(event.data.environment); - } - } - } - } - - function onPush(event) { - if (!(self.Notification && self.Notification.permission === 'granted')) { - return; - } - removeOldCampaignsFromIndexedDB(); - var campaignId; - var idbData = {}; - event.waitUntil( - moeReportParamsDB - .getItem('reportParams') - .then(function(res) { - if (res && res.data) { - idbData = res.data; - if (res.data.environment) { - baseDomain.set(res.data.environment); - } - } - return; - }) - .then(function() { - try { - var jsonPayload = event.data.json(); - if (jsonPayload) { - return jsonPayload; - } - } catch (err) { - console.error( - 'payload not received or has some errors in Moengage Push', - ); - } - }) - .then(async function(data) { - var payload = data.payload; - if (!(payload && payload.moe_cid_attr)) return; - if (data.cid) { - campaignId = data.cid; - const isCampaigTriggered = await isCampaignAlreadyTriggered( - campaignId, - ); - if (isCampaigTriggered) { - throw new Error( - `The campaign ${campaignId} has already been executed.`, - ); - } - var campaignBackup = { - cid: campaignId, - }; - - if (payload) { - campaignBackup = { - cid: campaignId, - title: payload.title, - message: payload.message, - actions: payload.actions, - image: payload.image, - moe_cid_attr: payload.moe_cid_attr, - timestamp: Date.now(), - }; - } - - moeCampaignsDB.setItem(campaignId, campaignBackup); - } - - if (!payload || !payload.title || !payload.message) { - trackEvent( - 'MOE_NO_PAYLOAD_WEB', - { - cid: data.cid, - }, - 0, - ); - console.error('Moengage - Web Push payload error'); - return showNotificationForError('Welcome', { - body: 'Something unexpected happened', - requireInteraction: false, - }); - } - - var campaign_id; - var campaign_name; - try { - campaign_id = payload.moe_cid_attr.moe_campaign_id; - campaign_name = payload.moe_cid_attr.moe_campaign_name; - } catch (err) { - throw new Error('cannot get campaign ID or campaign Name.'); - } - - trackEvent( - 'NOTIFICATION_RECEIVED_WEB_MOE', - { - cid: campaignId, - moe_campaign_id: campaign_id, - moe_campaign_name: campaign_name, - ...payload.moe_cid_attr, - }, - 1, - ); - - var params = { - body: payload.message, - icon: payload.icon, - tag: data.cid || 'moe-id', - badge: payload.badge, - data: { - url: payload.urlToOpen, - actions: payload.actions, - cid: campaignId, - }, - // requireInteraction: - // (payload && !JSON.parse(data.payload.reqInteract)) || false, - actions: payload.actions, - image: payload.image, - }; - - return showNotification(payload.title, params); - }) - .catch(function(err) { - console.error('Moengage Service Worker Error - ', err); - return showNotificationForError('Welcome', { - body: 'Something unexpected happened', - requireInteraction: false, - }); - }), - ); - } - - function isCampaignAlreadyTriggered(campaignId) { - return moeCampaignsDB - .length() - .then(numberOfKeys => { - if (numberOfKeys === 0) { - throw new Error('Existing campaign not present in indexedDB'); - } else { - return moeCampaignsDB - .iterate(function(campaign, dbCampaignId) { - if (campaignId === dbCampaignId) { - return true; - } - }) - .then(isTriggered => { - return isTriggered; - }); - } - }) - .catch(() => { - return false; - }); - } - - function removeOldCampaignsFromIndexedDB() { - moeCampaignsDB.iterate(function(campaign, campaignId) { - const now = Date.now(); - const timeDiff = (now - campaign.timestamp) / (1000 * 60 * 60 * 24); - if (timeDiff > MAX_DAYS_CAMPAIGN_SAVE) { - moeCampaignsDB.removeItem(campaignId); - } - }); - } - - function onNotificationClick(event) { - var notificationTitle; - var notificationData = event.notification.data; - event.notification.close(); - var clickResponsePromise = Promise.resolve(); - if (notificationData) { - if ( - event.action === '0' && - notificationData.actions && - notificationData.actions instanceof Array && - notificationData.actions.length > 0 && - notificationData.actions[0].url - ) { - clickResponsePromise = clients.openWindow( - notificationData.actions[0].url, - ); - notificationTitle = notificationData.actions[0].title; - } else if ( - event.action === '1' && - notificationData.actions && - notificationData.actions instanceof Array && - notificationData.actions.length > 1 && - notificationData.actions[1].url - ) { - clickResponsePromise = clients.openWindow( - notificationData.actions[1].url, - ); - notificationTitle = notificationData.actions[1].title; - } else if (notificationData.url) { - clickResponsePromise = clients.openWindow(notificationData.url); - notificationTitle = notificationData.title; - } - } - - var eventTracker = new Promise(function(res) { - moeCampaignsDB - .iterate(function(campaign, campaignId) { - if (campaignId == notificationData.cid) { - var campaign_id; - var campaign_name; - try { - campaign_id = campaign.moe_cid_attr.moe_campaign_id; - campaign_name = campaign.moe_cid_attr.moe_campaign_name; - } catch (err) { - throw new Error(err); - } - trackEvent( - 'NOTIFICATION_CLICKED_WEB_MOE', - { - cid: campaign.cid, - button: notificationTitle || void 0, - moe_campaign_id: campaign_id, - moe_campaign_name: campaign_name, - ...campaign.moe_cid_attr, - }, - 1, - ); - // moeCampaignsDB.removeItem(campaignId); - return campaignId; - } - }) - .then(function(result) { - console.info('Web Push Campaign clicked: ', result); - res(); - }); - }); - - event.waitUntil( - moeReportParamsDB - .getItem('reportParams') - .then(function(res) { - if (res.data.environment) { - baseDomain.set(res.data.environment); - } - return; - }) - .then(function() { - return Promise.all([clickResponsePromise, eventTracker]); - }), - ); - } - - function onNotificationClose(event) { - var notificationData = event.notification.data; - notificationData && moeCampaignsDB - .iterate(function(campaign, campaignId) { - if (campaignId == notificationData.cid) { - // moeCampaignsDB.removeItem(campaignId); - return campaignId; - } - }) - .then(function(result) { - console.info('Web Push Campaign closed: ', result); - }); - } - - function splitEndPointSubscription(subscriptionDetails) { - var endpoint = subscriptionDetails.endpoint; - if (endpoint.indexOf(URLS.FCM_END_POINT) === 0) { - return endpoint.replace(URLS.FCM_END_POINT, ''); - } else if (endpoint.indexOf(URLS.MOZILLA_END_POINT) === 0) { - return endpoint.replace(URLS.MOZILLA_END_POINT, ''); - } else if (endpoint.indexOf(URLS.SAFARI_END_POINT) === 0) { - return endpoint.replace(URLS.SAFARI_END_POINT, ''); - } else if (endpoint.indexOf(URLS.EDGE_END_POINT) === 0) { - return endpoint.replace(URLS.EDGE_END_POINT, ''); - } - return subscriptionDetails.subscriptionId; - } - - function showNotification(title, data) { - return self.registration.showNotification(title, data); - } - - function showNotificationForError(title, data) { - return self.registration.showNotification(title, data).then(function() { - setTimeout(closeNotifications, 2000); - }); - } - - function closeNotifications() { - self.registration.getNotifications().then(function(notifications) { - for (var i = 0; i < notifications.length; ++i) { - notifications[i].close(); - } - }); - } - - function trackEvent(eventName, attrs, flag, extraKeys = {}) { - moeReportParamsDB.getItem('reportParams').then(function(res) { - var data = res.data; - // var postData = { - // e: eventName, - // a: attrs, - // f: flag, - // }; - data.device_ts = getUtcTimestamp(); - delete extraKeys.h; - - self.registration.pushManager - .getSubscription() - .then(function(subscription) { - if (subscription) { - var subscriptionId = splitEndPointSubscription(subscription); - if (subscriptionId) { - data.push_id = subscriptionId; - } else { - delete data.push_id; - } - } else { - //web push subscription not found - delete data.push_id; - } - delete data.os_platform; - data.app_ver = data.app_ver.toString(); - - const payload = { - query_params: data, - meta: { - bid: uuidV4(), - request_time: new Date().toISOString(), - }, - viewsCount: 1, - viewsInfo: [ - { - EVENT_ACTION: eventName, - EVENT_ATTRS: attrs, - EVENT_G_TIME: new Date().getTime().toString(), - EVENT_L_TIME: convertDateToDateMonthYearFormat(), - }, - ], - ...extraKeys, - }; - - fetch(URLS.batch() + data.app_id, { - method: 'POST', - body: JSON.stringify(payload), - }).then(function(response) { - return response.json(); - }).catch((err) => { - console.error('API Fail:', err) - }); - }); - }); - } - - function convertDateToDateMonthYearFormat() { - const date = new Date(); - return `${date.getDate()}:${date.getMonth() + - 1}:${date.getFullYear()}:${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; - } - - function uuidV4() { - return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => - ( - c ^ - (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4))) - ).toString(16), - ); - } - - function getUtcTimestamp() { - var now = new Date(); - return Number( - Date.UTC( - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate(), - now.getUTCHours(), - now.getUTCMinutes(), - now.getUTCSeconds(), - now.getUTCMilliseconds(), - ), - ); - } - - return { - init: init, - }; -})(self); - -MoengageSW.init(); - -self.addEventListener('fetch', () => { - // This is a dummy event listener - // just to pass the PWA installation criteria on - // some browsers -}); +/*! For license information please see serviceworker_chrome_ext_cdn.js.LICENSE.txt */ +(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,r){function o(a,c){if(!n[a]){if(!t[a]){if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}u=n[a]={exports:{}},t[a][0].call(u.exports,(function(e){return o(t[a][1][e]||e)}),u,u.exports,e,t,n,r)}return n[a].exports}for(var i=void 0,a=0;ae.db.version;return r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),(o||n)&&(!n||(n=e.db.version+1)>e.version&&(e.version=n),1)}function N(e){return i([function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=0;o>4,u[c++]=(15&n)<<4|r>>2,u[c++]=(3&r)<<6|63&o;return i}function F(e){for(var t=new Uint8Array(e),n="",r=0;r>2],n+=A[(3&t[r])<<4|t[r+1]>>4],n+=A[(15&t[r+1])<<2|t[r+2]>>6],n+=A[63&t[r+2]];return t.length%3==2?n=n.substring(0,n.length-1)+"=":t.length%3==1&&(n=n.substring(0,n.length-2)+"=="),n}var U={serialize:function(e,t){var n="";if(e&&(n=P.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===P.call(e.buffer))){var r,o=R;e instanceof ArrayBuffer?(r=e,o+=B):(r=e.buffer,"[object Int8Array]"===n?o+="si08":"[object Uint8Array]"===n?o+="ui08":"[object Uint8ClampedArray]"===n?o+="uic8":"[object Int16Array]"===n?o+="si16":"[object Uint16Array]"===n?o+="ur16":"[object Int32Array]"===n?o+="si32":"[object Uint32Array]"===n?o+="ui32":"[object Float32Array]"===n?o+="fl32":"[object Float64Array]"===n?o+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(o+F(r))}else if("[object Blob]"===n)(n=new FileReader).onload=function(){var n="~~local_forage_type~"+e.type+"~"+F(this.result);t(R+k+n)},n.readAsArrayBuffer(e);else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,C)!==R)return JSON.parse(e);var t,n=e.substring(M),r=e.substring(C,M);r===k&&x.test(n)&&(t=(e=n.match(x))[1],n=n.substring(e[0].length));var o=L(n);switch(r){case B:return o;case k:return i([o],{type:t});case"si08":return new Int8Array(o);case"ui08":return new Uint8Array(o);case"uic8":return new Uint8ClampedArray(o);case"si16":return new Int16Array(o);case"ur16":return new Uint16Array(o);case"si32":return new Int32Array(o);case"ui32":return new Uint32Array(o);case"fl32":return new Float32Array(o);case"fl64":return new Float64Array(o);default:throw new Error("Unkown type: "+r)}},stringToBuffer:L,bufferToString:F};function W(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function z(e,t,n,r,o,i){e.executeSql(n,r,o,(function(e,a){a.code===a.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,c){c.rows.length?i(e,a):W(e,t,(function(){e.executeSql(n,r,o,i)}),i)}),i):i(e,a)}),i)}function q(e,t,n,r){var o=this;e=f(e);var i=new a((function(i,a){o.ready().then((function(){var c=t=void 0===t?null:t,u=o._dbInfo;u.serializer.serialize(t,(function(t,f){f?a(f):u.db.transaction((function(n){z(n,u,"INSERT OR REPLACE INTO "+u.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){i(c)}),(function(e,t){a(t)}))}),(function(t){t.code===t.QUOTA_ERR&&(0 '__WebKitDatabaseInfoTable__'",[],(function(t,n){for(var r=[],i=0;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r);var e=n(483),t=n.n(e);(function(e){var n,r,o,i={env:"sdk-01.moengage.com",get:function(){return"https://"+i.env},set:function(e){i.env=e}},a=function(){return i.get()+"/v2/sdk/report/"},c="https://fcm.googleapis.com/fcm/send/",u="https://updates.push.services.mozilla.com/wpush/v2/",f="https://wns2-pn1p.notify.windows.com/w/?token=",s="https://web.push.apple.com/";function d(e){"install"===e.reason?console.log("Extension installed"):"update"===e.reason&&console.log("Extension updated")}function l(t){console.log("onActive event",t?.data),t.waitUntil(e.clients.claim())}function v(e){console.log("mesage event",e?.data),e.data&&e.data&&e.data.app_id&&(n.setItem("reportParams",e),e.data.environment&&i.set(e.data.environment))}function h(t){var o;e.Notification&&"granted"===e.Notification.permission&&(r.iterate((function(e,t){(Date.now()-e.timestamp)/864e5>28&&r.removeItem(t)})),t.waitUntil(n.getItem("reportParams").then((function(e){e&&e.data&&(e.data,e.data.environment&&i.set(e.data.environment))})).then((function(){try{var e=t.data.json();if(e)return e}catch(e){console.error("payload not received or has some errors in Moengage Push")}})).then((async function(t){var n,i,a,c=t.payload;if(c&&c.moe_cid_attr){if(t.cid){if(o=t.cid,n=o,await r.length().then((e=>{if(0===e)throw new Error("Existing campaign not present in indexedDB");return r.iterate((function(e,t){if(n===t)return!0})).then((e=>e))})).catch((()=>!1)))throw new Error(`The campaign ${o} has already been executed.`);var u={cid:o};c&&(u={cid:o,title:c.title,message:c.message,actions:c.actions,image:c.image,moe_cid_attr:c.moe_cid_attr,timestamp:Date.now()}),r.setItem(o,u)}if(!c||!c.title||!c.message)return b("MOE_NO_PAYLOAD_WEB",{cid:t.cid}),console.error("Moengage - Web Push payload error"),y("Welcome",{body:"Something unexpected happened",requireInteraction:!1});try{i=c.moe_cid_attr.moe_campaign_id,a=c.moe_cid_attr.moe_campaign_name}catch(t){throw new Error("cannot get campaign ID or campaign Name.")}return b("NOTIFICATION_RECEIVED_WEB_MOE",{cid:o,moe_campaign_id:i,moe_campaign_name:a,...c.moe_cid_attr}),t={body:c.message,icon:c.icon,tag:t.cid||"moe-id",badge:c.badge,data:{url:c.urlToOpen,actions:c.actions,cid:o},actions:c.actions,image:c.image},c=c.title,e.registration.showNotification(c,t)}})).catch((function(e){return console.error("Moengage Service Worker Error - ",e),y("Welcome",{body:"Something unexpected happened",requireInteraction:!1})}))))}function p(e){var t,o=e.notification.data;e.notification.close();var a=Promise.resolve();o&&("0"===e.action&&o.actions&&o.actions instanceof Array&&0(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))),request_time:(new Date).toISOString()},viewsCount:1,viewsInfo:[{EVENT_ACTION:t,EVENT_ATTRS:r,EVENT_G_TIME:(new Date).getTime().toString(),EVENT_L_TIME:function(){const e=new Date;return`${e.getDate()}:${e.getMonth()+1}:${e.getFullYear()}:${e.getHours()}:${e.getMinutes()}:`+e.getSeconds()}()}],...i};fetch(a()+o.app_id,{method:"POST",body:JSON.stringify(n)}).then((function(e){return e.json()})).catch((e=>{console.error("API Fail:",e)}))}))}))}return{init:async function(){console.log("init event"),chrome.runtime.onInstalled.addListener(d),chrome.runtime.onStartup.addListener(l),chrome.runtime.onMessage.addListener(v),e.addEventListener("push",h),e.addEventListener("notificationclick",p),e.addEventListener("notificationclose",m),await new Promise((e=>{n=t().createInstance({driver:[t().INDEXEDDB],name:"moe_database",storeName:"moe_data"}),r=t().createInstance({driver:[t().INDEXEDDB],name:"moe_database",storeName:"moe_backup"}),o=t().createInstance({driver:[t().INDEXEDDB],name:"moe_database",storeName:"offline_data"}),Promise.all([n.ready(),r.ready(),o.ready()]).then(e())}))}}})(self).init(),self.addEventListener("fetch",(()=>{}))})()})(); \ No newline at end of file diff --git a/chrome-extension/manifest.json b/chrome-extension/manifest.json index 545bbaa3..b32b06de 100644 --- a/chrome-extension/manifest.json +++ b/chrome-extension/manifest.json @@ -1,11 +1,11 @@ { - "name": "Moengage SDK", + "name": "Moengage SDK WebPush", "description": "Moengage Web SDK Sample for Chrome Extension", "version": "1.0", "background": { "service_worker": "background.js" }, - "permissions": ["notifications", "storage"], + "permissions": ["notifications"], "web_accessible_resources": [{ "resources": [ "injectScripts/webSDK.min.js", "injectScripts/webSDK.cards.min.js" ], "matches": [ "" ] diff --git a/chrome-extension/popup.js b/chrome-extension/popup.js index 64e0af7d..4f0d7d03 100644 --- a/chrome-extension/popup.js +++ b/chrome-extension/popup.js @@ -1,8 +1,9 @@ console.log('This is a popup!'); window.Moengage = moe({ app_id: 'XXXXXXXXXXXXXXXXXXXX', - debug_logs: 0, environment: 'sdk-01.moengage.com', + debug_logs: 0, disable_onsite: true, disableCookies: true -}); \ No newline at end of file +}); + diff --git a/chrome-extension/webSDK.min.js b/chrome-extension/webSDK.min.js index bd21aacc..aa310e25 100644 --- a/chrome-extension/webSDK.min.js +++ b/chrome-extension/webSDK.min.js @@ -1,2 +1,3 @@ + /*! For license information please see sdk.js.LICENSE.txt */ -(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,i){function a(o,s){if(!n[o]){if(!t[o]){if(r)return r(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}l=n[o]={exports:{}},t[o][0].call(l.exports,(function(e){return a(t[o][1][e]||e)}),l,l.exports,e,t,n,i)}return n[o].exports}for(var r=void 0,o=0;oe.db.version;return i&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),(a||n)&&(!n||(n=e.db.version+1)>e.version&&(e.version=n),1)}function A(e){return r([function(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),a=0;a>4,l[s++]=(15&n)<<4|i>>2,l[s++]=(3&i)<<6|63&a;return r}function F(e){for(var t=new Uint8Array(e),n="",i=0;i>2],n+=P[(3&t[i])<<4|t[i+1]>>4],n+=P[(15&t[i+1])<<2|t[i+2]>>6],n+=P[63&t[i+2]];return t.length%3==2?n=n.substring(0,n.length-1)+"=":t.length%3==1&&(n=n.substring(0,n.length-2)+"=="),n}var W={serialize:function(e,t){var n="";if(e&&(n=B.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===B.call(e.buffer))){var i,a=N;e instanceof ArrayBuffer?(i=e,a+=M):(i=e.buffer,"[object Int8Array]"===n?a+="si08":"[object Uint8Array]"===n?a+="ui08":"[object Uint8ClampedArray]"===n?a+="uic8":"[object Int16Array]"===n?a+="si16":"[object Uint16Array]"===n?a+="ur16":"[object Int32Array]"===n?a+="si32":"[object Uint32Array]"===n?a+="ui32":"[object Float32Array]"===n?a+="fl32":"[object Float64Array]"===n?a+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(a+F(i))}else if("[object Blob]"===n)(n=new FileReader).onload=function(){var n="~~local_forage_type~"+e.type+"~"+F(this.result);t(N+k+n)},n.readAsArrayBuffer(e);else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,L)!==N)return JSON.parse(e);var t,n=e.substring(x),i=e.substring(L,x);i===k&&R.test(n)&&(t=(e=n.match(R))[1],n=n.substring(e[0].length));var a=U(n);switch(i){case M:return a;case k:return r([a],{type:t});case"si08":return new Int8Array(a);case"ui08":return new Uint8Array(a);case"uic8":return new Uint8ClampedArray(a);case"si16":return new Int16Array(a);case"ur16":return new Uint16Array(a);case"si32":return new Int32Array(a);case"ui32":return new Uint32Array(a);case"fl32":return new Float32Array(a);case"fl64":return new Float64Array(a);default:throw new Error("Unkown type: "+i)}},stringToBuffer:U,bufferToString:F};function H(e,t,n,i){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,i)}function K(e,t,n,i,a,r){e.executeSql(n,i,a,(function(e,o){o.code===o.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?r(e,o):H(e,t,(function(){e.executeSql(n,i,a,r)}),r)}),r):r(e,o)}),r)}function G(e,t,n,i){var a=this;e=c(e);var r=new o((function(r,o){a.ready().then((function(){var s=t=void 0===t?null:t,l=a._dbInfo;l.serializer.serialize(t,(function(t,c){c?o(c):l.db.transaction((function(n){K(n,l,"INSERT OR REPLACE INTO "+l.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){r(s)}),(function(e,t){o(t)}))}),(function(t){t.code===t.QUOTA_ERR&&(0 '__WebKitDatabaseInfoTable__'",[],(function(t,n){for(var i=[],r=0;r{let i;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:n.g):e=>(i=i||Promise.resolve()).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},967:(e,t,n)=>{e.exports=function(e,t,n){if("number"!=typeof t)throw new Error("second argument must be a Number");let a,r,o,s,l,c,d=!0;function g(e){function t(){n&&n(e,a),n=null}d?i(t):t()}function u(t,n,i){if(a[t]=i,n&&(l=!0),0==--o||n)g(n);else if(!l&&c{var i=n(570),a=n(171);(n=a).v1=i,n.v4=a,e.exports=n},327:e=>{for(var t=[],n=0;n<256;++n)t[n]=(n+256).toString(16).substr(1);e.exports=function(e,n){var i=n||0;return[(n=t)[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[+i]]].join("")}},217:e=>{var t,n,i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);i?(t=new Uint8Array(16),e.exports=function(){return i(t),t}):(n=new Array(16),e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n})},570:(e,t,n)=>{var i,a,r=n(217),o=n(327),s=0,l=0;e.exports=function(e,t,n){var c=t&&n||0,d=t||[],g=(e=e||{}).node||i,u=void 0!==e.clockseq?e.clockseq:a;null!=g&&null!=u||(h=r(),null==g&&(g=i=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==u&&(u=a=16383&(h[6]<<8|h[7])));var p=void 0!==e.msecs?e.msecs:(new Date).getTime(),h=(n=void 0!==e.nsecs?e.nsecs:l+1,p-s+(n-l)/1e4);if(h<0&&void 0===e.clockseq&&(u=u+1&16383),1e4<=(n=(h<0||s>>24&255,d[c++]=n>>>16&255,d[c++]=n>>>8&255,d[c++]=255&n,p=p/4294967296*1e4&268435455,d[c++]=p>>>8&255,d[c++]=255&p,d[c++]=p>>>24&15|16,d[c++]=p>>>16&255,d[c++]=u>>>8|128,d[c++]=255&u;for(var m=0;m<6;++m)d[c+m]=g[m];return t||o(d)}},171:(e,t,n)=>{var i=n(217),a=n(327);e.exports=function(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var s=0;s<16;++s)t[r+s]=o[s];return t||a(o)}}},t={};function n(i){var a=t[i];return void 0!==a||(a=t[i]={exports:{}},e[i](a,a.exports,n)),a.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{exportForTesting:()=>da,initializeLaunchSequence:()=>sa});const e="initData",t="browserDetails",a="unifiedLogs",r={USER_DATA:"USER_DATA",PUSH_TOKEN:"PUSH_TOKEN",SUBSCRIPTION_DETAILS:"SUBSCRIPTION_DETAILS",SETUP_TIME:"SETUP_TIME",OPT_IN_SHOWN_TIME:"OPT_IN_SHOWN_TIME",OPTED_STATUS_TRACK_TIME:"OPTED_STATUS_TRACK_TIME",SOFT_ASK_STATUS:"SOFT_ASK_STATUS",HARD_ASK_STATUS:"HARD_ASK_STATUS",WEB_SETTINGS:"WEB_SETTINGS",GRACEFUL_DATA:"GRACEFUL_DATA",Q:{PREFIX:"Q",REPORT:"REPORT",DEVICE:"DEVICE"},INIT_DATA:"INIT_DATA",OLD_SDK:{USER_DATA:"moengage_data",SUBSCRIPTION_DETAILS:"MOE_PUSH_ENDPOINT",PUSH_TOKEN:"MOE_PUSH_TOKEN"},BROWSER_DETAILS:"browserDetails",SESSION:"SESSION"},o=2,s="MOE_WEB_UNSUBSCRIBED",l="EVENT_ACTION_WEB_SESSION_START",c="MOE_PAGE_VIEWED",d="MOE_WEB_OPTIN_BANNER_LOAD",g="MOE_WEB_OPTIN_CLOSED",u="MOE_WEB_OPTIN_ACCEPTED",p="MOE_OPT_IN_SHOWN",h="MOE_OPT_IN_ALLOWED",m="MOE_OPT_IN_DISMISSED",f="MOE_OPT_IN_BLOCKED",v="MOE_OPT_IN_ATTEMPT",S="MOE_LOGOUT",E="EVENT_ACTION_DEVICE_ATTRIBUTE",y="MOE_PUSH_PERMISSION_STATE_ALLOWED",b="MOE_PUSH_PERMISSION_STATE_BLOCKED",_="MOE_PAGE_EXIT",T="MOE_PAGE_SCROLL",I="MOE_PAGE_URL_EVENT",A="USER_ATTRIBUTE_UNIQUE_ID",w="USER_ATTRIBUTE_USER_EMAIL",D="USER_ATTRIBUTE_USER_NAME",O="USER_ATTRIBUTE_USER_FIRST_NAME",C="USER_ATTRIBUTE_USER_LAST_NAME",P="USER_ATTRIBUTE_USER_MOBILE",R="USER_ATTRIBUTE_USER_GENDER",N="USER_ATTRIBUTE_USER_BDAY",L="USER_ID_MODIFIED_FROM",M=["id","first_name","last_name","email","mobile","name","gender","birthday"],k=[A,L,w,P],x="MOE_LIFECYCLE",B={MOE_INIT:"SDK_INITIALIZED",SETTINGS_FETCHED:"SETTINGS_FETCHED",EVENT_TRACKED:"EVENT_TRACKED",DEVICE_UUID:"DEVICE_UUID",MOE_INIT_COMPLETED:"SDK_INITIALIZATION_COMPLETED",CARDS_INIT:"CARDS_INITIALIZED"},U={HARD_ASK_SHOWN:"HARD_ASK_SHOWN",HARD_ASK_DISMISSED:"HARD_ASK_DISMISSED",HARD_ASK_ATTEMPTED:"HARD_ASK_ATTEMPTED",HARD_ASK_ALLOWED:"HARD_ASK_ALLOWED",HARD_ASK_DENIED:"HARD_ASK_DENIED",SOFT_ASK_SHOWN:"SOFT_ASK_SHOWN",SOFT_ASK_DISMISSED:"SOFT_ASK_DISMISSED",SOFT_ASK_ALLOWED:"SOFT_ASK_ALLOWED"},F={code:1e3,reason:"Web push not supported in current browser environment"},W={code:1001,reason:"Registering the service worker failed"},H={code:1002,reason:"Web push settings not configured"},K={code:1004,reason:"Hard ask was dismissed to many times"},G={code:1005,reason:"Service worker can not be registered on this page due to scope issues"},V="https://media.giphy.com/media/KDRv3QggAjyo/giphy.gif",j={DC_1:"sdk-01.moengage.com",DC_2:"sdk-02.moengage.com",DC_3:"sdk-03.moengage.com",DC_4:"sdk-04.moengage.com",DC_5:"sdk-05.moengage.com",DC_6:"sdk-06.moengage.com",DC_100:"sdk-100.moengage.com",eu:"sdk-02.moengage.com",in:"sdk-03.moengage.com"},Y={MOE_DASHBOARD:"https://app.moengage.com",MIGRATION_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",WEBSDK_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",SELF_HANDLED_DOCS:"https://docs.moengage.com/docs/self-handled-opt-ins"},z="Dashboard --\x3e Settings --\x3e Channel --\x3e Push",q="SESSION",$="v3/sdkconfig/",J="moe_tracking",X="events",Q="batched_events",Z="moe_uuid",ee="MoengagePageEventHistoryManager",te={HOST_1:"https://sdk-01.moengage.com/",HOST_2:"https://sdk-02.moengage.com/",HOST_3:"https://sdk-03.moengage.com/",HOST_4:"https://sdk-04.moengage.com/",HOST_5:"https://sdk-05.moengage.com/",HOST_6:"https://sdk-06.moengage.com/",HOST_100:"https://sdk-100.moengage.com/",API:{META:"v3/campaigns/inapp/live",CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/live/",DRAFT_CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/test/",STATS:"v3/campaigns/inapp/live/stats",CAMPAIGNS_PAYLOAD:"v3/campaigns/inapp/live/campaigns"},DRAFT_CAMPAIGN_TPYES:{WEB_PERSONALIZATON:"web_personalization",ONSITE_MESSAGING:"onsite_messaging"},META_REFRESH_TIME:9e5,DATABASE_NAME:"moe_onsite",OSM_MODULE:"moeOnsite",DELIVERY_FUNNEL:{ATTEMPTED:{CAMPAIGN_ATTEMPTED:"ATM"},PRIORITIZED:{CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE:"PRT_HIGH_PRT_CMP_AVL",CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN:"PRT_MAX_TIM_SWN",CAMPAIGN_PRIORITY_MIN_DELAY:"PRT_MIN_DEL",CAMPAIGN_PRIORITY_GLOBAL_DELAY:"PRT_GBL_DEL",CAMPAIGN_PRIORITY_EXPIRED:"PRT_EXP"},DELIVERED:{CAMPAIGN_DELIVERED_API_FAILURE:"DLV_API_FLR",CAMPAIGN_DELIVERED_PERSONALIZATION_FAILURE:"DLV_PERSN_FLR",CAMPAIGN_DELIVERED_PAUSED:"DLV_PAU",CAMPAIGN_DELIVERED_EXPIRED:"DLV_EXP",CAMPAIGN_DELIVERED_MANDATORY_PARAMS_MISSING:"DLV_MAND_PARM_MIS"},IMPRESSION:{CAMPAIGN_IMPRESSION_CONTEXT_CHANGED:"IMP_CTX_CHG",CAMPAIGN_IMPRESSION_GLOBAL_DELAY:"IMP_GBL_DEL",CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN:"IMP_MAX_TIM_SHW",CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE:"IMP_ANTR_CMP_VISB",CAMPAIGN_IMPRESSION_CANCEL_BEFORE_DELAY:"IMP_CNCL_BFR_DEL"},EVALUATION:{CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED:"EVL_PATH_TIME_EXP",CAMPAIGN_EVALUATION_USER_NOT_ON_APP:"EVL_USER_NOT_ON_APP"}},STORES:{CAMPAIGNS_META:{NAME:"campaigns_meta"},CAMPAIGNS_TAGS:{NAME:"campaigns_tags"},CAMPAIGNS_STATS:{NAME:"campaigns_stats"},TEST_CAMPAIGN_STORE:{NAME:"test_campaign"},EXIT_INTENT_CAMPAIGN_STORE:{NAME:"exit_intent"},SERVICE_META:{NAME:"service_meta",KEYS:{LAST_META_CALL_TIME:"last_meta_call_time",GLOBAL_DELAY:"global_delay_between_inapps",LAST_INAPP_SHOWN_TIME:"last_inapp_shown",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",UNIQUE_ID:"unique_id"}},PENDING_SECONDARY_EVENTS:{NAME:"pending_secondary_events"},PENDING_TIMER_CAMPAIGNS:{NAME:"pending_timer_campaigns"},TRIGGERING_PRIMARY_EVENTS:{NAME:"triggering_primary_events"}},EVENT_NAMES:{OSM:{CLICK:"MOE_ONSITE_MESSAGE_CLICKED",IMPRESSION:"MOE_ONSITE_MESSAGE_SHOWN",DISMISS:"MOE_ONSITE_MESSAGE_DISMISSED",AUTO_DISMIS:"MOE_ONSITE_MESSAGE_AUTO_DISMISS",TYPE:"onsite"},WP:{CLICK:"MOE_WEBP_MESSAGE_CLICKED",IMPRESSION:"MOE_WEBP_MESSAGE_SHOWN",DISMISS:"MOE_WEBP_MESSAGE_DISMISSED",DELIVERED:"MOE_WEBP_MESSAGE_DELIVERED",TYPE:"webp"}},WEB_HELPER_IFRAME_URL:"https://cdn.moengage.com/webpush/beta/webpushhelper.html",IFRAME_CHANNEL:"inapp_helper",IFRAME_TOPICS:{COOKIE_STORAGE:"COOKIE_STORAGE"},COOKIE_STORAGE:{TEST_DRAFT_TYPE:"moe_inapp_draft_type",TEST_DRAFT_ID:"moe_inapp_draft_id",TEST_DRAFT_TAG:"moe_inapp_draft_tag",TEST_CAMPAIGN_META:"test_campaign_meta",TEST_TEMPLATE_TYPE:"test_template_type",TEST_VARIATION:"moe_inapp_draft_variation",TEST_LOCALE:"moe_inapp_draft_locale"},CSS_SELECTORS:{CLICK_INAPP:"moe-inapp-click",DISMISS_INAPP:"moe-inapp-close"},EXIT_INTENT:{CONFIG:{SCROLL_DOWN_THRESHOLD:50,SCROLL_UP_THRESHOLD:5,SCROLL_INTERVAL:1e3}},POSITIONED_TEMPLATE:'data-editor-type="MOE_EDITOR"',SIDE_BANNER:'data-template-type="SIDE_BANNER"',PUSH_BANNER:"moe-osm-pusher",GCG_ERROR_CODE:"E001",SCROLL_CAMPAIGN_THROTTLING_TIME:1500},ne={CARDS:{name:"CARDS",src:"https://cdn.moengage.com/webpush/beta/sdk.cards.js",windowLocation:"moeCards"}},ie="moe_database",ae={NAME:"offline_data"},re="v2/sdk/report/",oe=15e3,se="number",le={TOPIC:"MOE_AUTOMATED_EVENTS",NAMES:[s,l,c,d,g,u,"MOE_USER_SUBSCRIBED",v,p,h,m,f,y,b,S,te.EVENT_NAMES.OSM.CLICK,te.EVENT_NAMES.OSM.IMPRESSION,te.EVENT_NAMES.OSM.DISMISS,te.EVENT_NAMES.OSM.AUTO_DISMIS]},ce=[v],de="moe_cards",ge={STORE_NAME:"campaigns"},ue={STORE_NAME:"meta",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",LAST_META_CALL_TIME:"last_meta_call_time",UNIQUE_ID:"unique_id",LAST_SYNC_CARDS:"last_sync_cards",SYNC_INTERVALS:"sync_intervals",SHOW_ALL_TAB:"show_all_tab"},pe="appOpen",he="IOS_PERMISSION_DENIED",me="moe_push_opted",fe="v1/sdk_logging/",ve="v2/device/add",Se="v2/device/token-check",Ee="v2/report/add",ye={TV:"tv",TABLET:"tablet",MOBILE:"mobile",WEB:"web"};var be,_e=n(483);function Te(e,t,n){return null!=e&&t?(e=e[(t=Array.isArray(t)?t:t.split("."))[0]])&&1{})),this.zIndex=Te(e,"zIndex","999999"),this.fontFaces=(null===(e=e.fontFaces)||void 0===e?void 0:e.map((e=>new Le(e))))||[]}}we.baseLogTag="CardsConfigModel";class De{constructor(e){this.backgroundColor=Te(e,"backgroundColor","#00237C"),this.text=Te(e,"text","Notification"),this.color=Te(e,"color","#fff"),this.fontSize=Te(e,"fontSize","16px"),this.fontFamily=Te(e,"fontFamily","inherit")}}class Oe{constructor(e={}){this.img=Te(e,"img","https://app-cdn.moengage.com/sdk/cards-error.svg"),this.text=Te(e,"text",'Error something went wrong ')}}class Ce{constructor(e){this.headerFontSize=Te(e,"headerFontSize","16px"),this.descriptionFontSize=Te(e,"descriptionFontSize","14px"),this.ctaFontSize=Te(e,"ctaFontSize","12px"),this.fontFamily=Te(e,"fontFamily","inherit"),this.horizontalRowColor=Te(e,"horizontalRowColor","#D9DFED")}}class Pe{constructor(e){this.mWebIcon=Te(e,"mWebIcon","https://app-cdn.moengage.com/sdk/back-icon.svg"),this.webIcon=Te(e,"webIcon","https://app-cdn.moengage.com/sdk/cross-icon.svg"),this.callBack=Te(e,"callBack",(()=>{}))}}class Re{constructor(e){this.inactiveTabFontColor=Te(e,"inactiveTabFontColor","#7C7C7C"),this.fontSize=Te(e,"fontSize","14px"),this.fontFamily=Te(e,"fontFamily","inherit"),this.backgroundColor=Te(e,"backgroundColor","#F6FBFC"),this.active=new Me(Te(e,"active",{}))}}class Ne{constructor(e){this.color=Te(e,"color","red"),this.enable=Te(e,"enable",!1)}}class Le{constructor(e){this.family=Te(e,"family",""),this.url=Te(e,"url","")}}class Me{constructor(e){this.color=Te(e,"color","#06A6B7"),this.underlineColor=Te(e,"underlineColor","#06A6B7"),this.backgroundColor=Te(e,"backgroundColor","transparent")}}class ke{constructor(e){this.enable=Te(e,"enable",!1),this.icon=Te(e,"icon","https://app-cdn.moengage.com/sdk/bell-icon.svg"),this.postion=Te(e,"postion","0px 10px 40px 0"),this.countBackgroundColor=Te(e,"countBackgroundColor","#FF5A5F"),this.countColor=Te(e,"countColor","#fff"),this.zIndex=Te(e,"zIndex","999998"),this.iconBackgroundColor=Te(e,"iconBackgroundColor","#D9DFED"),this.fontFamily=Te(e,"fontFamily","inherit")}}class xe{constructor(e){this.img=Te(e,"img","https://app-cdn.moengage.com/sdk/cards-no-result.svg"),this.text=Te(e,"text","No notifications to show, check again later.")}}class Be{constructor(e){this.debugLevel=0,this.cluster=null,this.environment=null,this.baseDomainName="https://sdk-01.moengage.com/",this.inapp=null,this.customSoftAsk=null;var t=Be.baseLogTag+".constructor";null!=Te(e,"app_id",null)?(this.appId=Te(e,"app_id",null),this.integrationType=be.OLD_SDK):null!=Te(e,"appId",null)?(this.appId=Te(e,"appId",null),this.integrationType=be.NEW_SDK):(ut.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",Y.WEBSDK_DOCS),this.integrationType=null),null!=Te(e,"debug_logs",null)?this.debugLevel=Te(e,"debug_logs",0):null!=Te(e,"debugLevel",null)?this.debugLevel=Te(e,"debugLevel",0):(ut.log(2,t,"No log level config found. Using default value of",0),this.debugLevel=0),this.appId&&(this.baseDomainName="https://sdk-01.moengage.com/",this.forceSwUpdate=Te(e,"forceSwUpdate",!1),this.cluster=Te(e,"cluster",this.cluster),this.cluster&&null!=j[this.cluster]&&(this.environment=j[this.cluster]),Te(e,"environment",null)&&(this.environment=e.environment),this.environment&&(this.baseDomainName="https://"+this.environment+"/"),0!!k.includes(e.key)))),e===r.SUBSCRIPTION_DETAILS&&(i.domain=t.domain,i.token=t.token,i.endpoint=t.endpoint,i.keys=t.keys),Ue.set(e,i)}}static get(e){return We.baseLogTag,e=We.prefix+e,localStorage?Te(We.getMoeData(),e,null):null}static remove(e){var t=We.baseLogTag+".remove",n=We.prefix+e;if(localStorage&&null!=We.get(e)){const i=We.getMoeData();delete i[n],localStorage.setItem(Fe,JSON.stringify(i)),ut.log(2,t,"Key",e,"removed.")}We.isSharedWithCookie&&0<=We.KEYS_SHARED_WITH_COOKIE.indexOf(e)&&Ue.remove(e)}static logout(){const e=["INIT_DATA","Q","WEB_SETTINGS","SUBSCRIPTION_DETAILS","PUSH_TOKEN","GRACEFUL_DATA"];for(const t in r)e.indexOf(t)<0&&We.remove(r[t]);for(const e in r.Q)Ae.purge(e)}static getString(e){if(e=We.prefix+e,localStorage)return"string"==typeof(e=We.get(e))||e instanceof String?e:JSON.stringify(e)}static removePrefix(){We.prefix=""}static copyKeysFromCookie(){for(let n=0;n{var n=e.findIndex((e=>e.key===t.key));0<=n?e[n]=t:e.push(t)})),e=e.filter((e=>!(k.includes(e.key)&&n.attributes.findIndex((t=>t.key===e.key))<0))),n.attributes=e}We.set(e,n)}}We.removeStaleKeysFromLS()}static removeStaleKeysFromLS(){var e=We.baseLogTag+".removeStaleKeysFromLS";try{Object.keys(We.getMoeData()).forEach((e=>{this.KEYS_SHARED_WITH_COOKIE.includes(e)&&!Ue.get(e)&&We.remove(e)}))}catch(t){ut.error(1,e,t)}}static getMoeData(){var e=We.baseLogTag+".getMoeData",t=localStorage.getItem(Fe);if(null==t)return{};try{return JSON.parse(t)}catch(t){return ut.error(1,e,t),{}}}}function He(e){return 0===Object.keys(e).length&&e.constructor===Object}function Ke(e){e=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e>18,s=(258048&d)>>12,l=(4032&d)>>6,c=63&d,t+=n[o]+n[s]+n[l]+n[c];return 1==e?(d=i[r],o=(252&d)>>2,s=(3&d)<<4,t+=n[o]+n[s]+"=="):2==e&&(d=i[r]<<8|i[1+r],o=(64512&d)>>10,s=(1008&d)>>4,l=(15&d)<<2,t+=n[o]+n[s]+n[l]+"="),t}function Ve(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?"vapid"===e.chrome.subscriptionMode&&e.chrome.vapidPublicKey:t.isFirefox()&&"vapid"===e.firefox.subscriptionMode&&e.firefox.vapidPublicKey}function je(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?e.chrome.vapidPublicKey:t.isFirefox()?e.firefox.vapidPublicKey:""}function Ye(){const e=Be.get().swPath;return!(!e||!e.includes("tools/moengage"))}function ze(e){return e.replace(/[\uff0e]/g,".")}function qe(){const e=navigator.userAgent;return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))}function $e(){var e=navigator.userAgent.toLowerCase(),t=/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(e);return/nexus player|neo-x5|adt-2|tsbnettv|roku|tizen|smart-tv.+(samsung)|hbbtv.+maple;(\d+)|(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))|(apple) ?tv|crkey|droid.+aft(\w)( bui|\))|\(dtv[\);].+(aquos)|(aquos-tv[\w ]+)\)|(bravia[\w ]+)( bui|\))|(mitv-\w{5}) bui|Hbbtv.*(technisat) (.*);|\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)|hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)|\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i.test(e)?ye.TV:t?ye.TABLET:qe()?ye.MOBILE:ye.WEB}function Je(e,t){const n=t&&new RegExp("^("+t.join("|")+")$");return $e()===ye.TV&&(null!=n&&n.test(e)||!t)?{moe_os_type:function(){var e=navigator.userAgent.toLowerCase();return/tizen/i.test(e)?"Tizen":/web0s/i.test(e)?"WebOS":/xbox/i.test(e)?"Xbox":/vizio/i.test(e)?"viziotv":"SmartTV"}(),os:ye.TV.toUpperCase()}:{}}function Xe(e){return new Date(Date.parse(e))}function Qe(){return window[window.moengage_object||"Moengage"]}We.baseLogTag="PersistentStorage",We.prefix="",We.isSharedWithCookie=!1,We.KEYS_SHARED_WITH_COOKIE=[r.USER_DATA,r.SUBSCRIPTION_DETAILS,r.SOFT_ASK_STATUS,r.PUSH_TOKEN,r.OPT_IN_SHOWN_TIME,r.HARD_ASK_STATUS,r.SESSION];const Ze=e=>"string"==typeof e,et=e=>"[object Date]"===Object.prototype.toString.call(e);function tt(e){return"object"==typeof e&&!et(e)}function nt(e,t){if(null==e||null==t)return e===t;if(e instanceof Function)return e===t;if(e instanceof RegExp)return e===t;if(e===t||e.valueOf()===t.valueOf())return!0;if(Array.isArray(e)&&e.length!==t.length)return!1;if(e instanceof Date)return!1;if(!(e instanceof Object))return!1;if(!(t instanceof Object))return!1;const n=Object.keys(e);return Object.keys(t).every((e=>-1!==n.indexOf(e)))&&n.every((n=>nt(e[n],t[n])))}function it(){const e=new Date;return`${e.getDate()}:${e.getMonth()+1}:${e.getFullYear()}:${e.getHours()}:${e.getMinutes()}:`+e.getSeconds()}const at=e=>{if(e){const t=e.replace("?","").split("&"),n={};return t.forEach((e=>{e=(t=e.split("="))[0];var t=decodeURIComponent(t[1]||"");n[e]?"[object Array]"===Object.prototype.toString.call(n[e])?n[e].push(t):n[e]=[n[e],t]:n[e]=t})),JSON.parse(JSON.stringify(n))}return{}},rt=e=>{var t,n,i=We.get(r.WEB_SETTINGS);null!=i&&i.configs.isWebPersonalisationModuleEnabled&&null!==(t=window.MoeWebP)&&void 0!==t&&t.clearLastFetchedTime(!0),e&&null!==(n=window.MoeWebP)&&void 0!==n&&n.getLiveExperiences()},ot=(e,t)=>{if(!t)return e;"?"!==e[e.length-1]&&(e+="?");for(const n in t)t.hasOwnProperty(n)&&null!=t[n]&&(e+=n+"="+encodeURIComponent(t[n])+"&");return"&"===e[e.length-1]?e.slice(0,-1):e},st=e=>{let t;try{t=JSON.stringify(e)}catch(e){return!1}return new Blob([t]).size/1024>195},lt=e=>e===s||e===b;function ct(e){return`Event "${e}" can't get tracked as its size is more than 195 KB. Max permissible event size is 195 KB.`}class dt{static logData(e,t){return{log_type:e,sent_time:(new Date).toISOString(),lake_fields:t}}static setRemoteLogging(e){return this.isTrackingEnabled||(this.logLevel=null==e?void 0:e.configs.logLevel,this.isTrackingEnabled=e.configs.remoteLogTracking,this.isTrackingEnabled)}static log(e,t,n,i,...a){!this.isTrackingEnabled||e!==this.logLevel&&"verbose"!==this.logLevel||Qe().remoteLogs.addRemoteLogs(this.logData(e,{msg:n+[...a].toString(),file_name:t,trace:i}))}}let gt="color: white; background: #41AE55; border-radius: 5px;";class ut{static setLogLevel(e,t){var n=ut.baseLogTag+".setLogLevel";null==Ie.get(a)&&Ie.set(a,[]),null==e?ut.logLevel=0:e in[0,1,2]?0<(ut.logLevel=e)&&t&&ut.releaseAllLogs():ut.warn(0,n,"Value",e,"not supported for setDebugLevel(). Current log level is",ut.logLevel,". Debug level can only be [0, 1, 2]")}static setLogTabStyle(e){ut.tagLogStyle=ut.tagLogStyle.replace("#48beab",e)}static log(e,t,n,...i){e<=ut.logLevel?console.log("%c "+ut.logBrand+" %c %c info %c %c "+t+" ",gt,"","color: white; background: #18a0bf; border-radius: 5px;","",ut.tagLogStyle,n,...i):ut.cacheLog((()=>{ut.log(e,t,n,...i)}))}static remoteLogTracking(e,t,n,i,...a){dt.log(t,n,i,...a),this.log(e,n,i,...a)}static error(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||dt.log("error",t,n,...i),e<=ut.logLevel?console.error("%c "+ut.logBrand+" %c %c error %c %c "+t+" ",gt,"","color: white; background: #cc0a0a; border-radius: 5px;","",ut.tagLogStyle,n,...i.slice(0,-1)):ut.cacheLog((()=>{ut.error(e,t,n,...i,{isCached:!0})}))}static warn(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||dt.log("warning",t,n,...i),e<=ut.logLevel?console.warn("%c "+ut.logBrand+" %c %c warn %c %c "+t+" ",gt,"","color: white; background: #e8ab51; border-radius: 5px;","",ut.tagLogStyle,n,...i.slice(0,-1)):ut.cacheLog((()=>{ut.warn(e,t,n,...i,{isCached:!0})}))}static customLabel(e,t,n,...i){e<=ut.logLevel?console.log("%c "+ut.logBrand+" %c %c "+t+" %c %c "+n+" %c ",gt,"",ut.tagLogStyle,"","color: white; background: #a400ff; border-radius: 5px;","",...i):ut.cacheLog((()=>{ut.customLabel(e,t,n,...i)}))}static image(e,t){e<=ut.logLevel?console.log("%c+","font-size: 1px; padding: 20px 80px; line-height: 45px; background: url("+t+"); background-size: 160px 90px; color: transparent;"):ut.cacheLog((()=>{ut.image(e,t)}))}static releaseAllLogs(){var e=Ie.get(a),t=e.length;const n=e;if(Ie.set(a,[]),0{var r=JSON.stringify(Te(n,"postData",null));t=ot(t,Te(n,"queryParams",null));const o=new XMLHttpRequest;o.open(e,t,!0),pt.addRequestHeaders(o,Te(n,"headers",{})),o.onreadystatechange=()=>{4===o.readyState&&200===o.status||4===o.readyState&&410===o.status?i({status:o.status,responseText:o.responseText}):4===o.readyState&&200!==o.status&&a({code:o.status,reason:o.responseText})},o.send(r)}))}static addRequestHeaders(e,t){for(const n in t)t.hasOwnProperty(n)&&e.setRequestHeader(n,t[n]);return e}}(Ji=(Ji=pt=pt||{}).METHODS||(Ji.METHODS={})).GET="GET",Ji.POST="POST";const ht=pt;class mt{constructor(){this.p=null,this.res=null,this.rej=null;try{this.p=new Promise(((e,t)=>{this.res=e,this.rej=t}))}catch(e){ut.error(1,"Utils.PromiseObject","Promises not supported")}}}var ft=n(877);class vt{initiateSessionAndSource(e){return new Promise(((t,n)=>{this.isSessionRunning()&&this.isCurrentSourceSameAsPreviousSource()||this.startNewSession(e),t(!0)}))}isSessionRunning(){return this.getSessionKey()&&!this.isSessionExpired()}isSessionExpired(){var e=this.getSessionExpiryTime(),t=Ie.get("wasBrowserInactive");return!(!t&&null!==t)&&(this.isWindowActive()&&Ie.set("wasBrowserInactive",!1),(new Date).getTime()>e)}isNonEventInteractive(e){return vt.NON_INTERACTIVE_EVENTS.includes(e.name)||0"moe_non_interactive"===e.key&&1===e.value)).length}getCurrentSource(){const e=at(window.location.search);let t="";const n={};if(Object.keys(e).includes("utm_source")){t="utm_",this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n[t]=e[t])}));const i={source_url:window.location.href};return e[t+"source"]&&(i.source=e[t+"source"]),e[t+"medium"]&&(i.medium=e[t+"medium"]),e[t+"term"]&&(i.term=e[t+"term"]),e[t+"campaign"]&&(i.campaign_name=e[t+"campaign"]),e[t+"content"]&&(i.content=e[t+"content"]),e.utm_id&&(i.campaign_id=e.utm_id),Object.keys(n).length&&(i.extra=n),i}}getActiveSource(){return this.getSavedSource()||this.getCurrentSource()}isSourceOrganic(){const e=at(window.location.search),t=Object.keys(e);let n=!1;return this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n=!0)})),!t.includes("utm_source")&&!t.includes("source")&&!n}setCurrentSource(e){const t=this.getSession()||{};t.currentSource=e,We.set(q,t)}removeCurrentSource(){const e=this.getSession();e&&(e.currentSource=void 0,We.set(q,e))}getSavedSource(){var e=Te(this.getSession(),"currentSource",void 0);if(e)return e}isCurrentSourceSameAsPreviousSource(){if(this.isSourceOrganic())return!0;const e=Object.assign({},this.getCurrentSource());delete e.source_url;const t=Object.assign({},this.getSavedSource());return delete t.source_url,nt(e,t)}getSessionKey(){return Te(this.getSession(),"sessionKey",null)}getSessionStartTime(){return Te(this.getSession(),"sessionStartTime",null)}getSessionExpiryTime(){return Te(this.getSession(),"sessionExpiryTime",null)}getSessionMaxTime(){return Te(this.getSession(),"sessionMaxTime",null)}getSession(){return We.get(q)}geCustomIdentifiersToTrack(){return Te(this.getSession(),"customIdentifiersToTrack",[])||[]}generateSessionKey(){return(0,ft.v4)()}startNewSession(e){this.removeCurrentSource();var t=this.getNumberOfSessions();t={sessionKey:this.generateSessionKey(),sessionStartTime:(new Date).toISOString(),sessionMaxTime:e.configs.sessionInactiveDuration,customIdentifiersToTrack:e.configs.sourceExtraParams,sessionExpiryTime:(new Date).getTime()+1e3*e.configs.sessionInactiveDuration,numberOfSessions:++t},We.set(q,t)}extendSession(){const e=this.getSession();e&&(e.sessionExpiryTime=(new Date).getTime()+1e3*e.sessionMaxTime,We.set(q,e))}handleBrowserInactivity(e){"hidden"===e&&Ie.set("wasBrowserInactive",!0)}isWindowActive(){return!!Ie.get("isWindowActive")}getNumberOfSessions(){return Te(We.get(q),"numberOfSessions")||0}}vt.NON_INTERACTIVE_EVENTS=[d,p,d,S];class St{constructor(e,t,n){this.os="web",this.osPlatform=e.userAgent,this.isMobile=qe(),this.os=qe()?"mweb":"web",this.name=St.getBrowserName(e.userAgent,t),this.isIncognito=n}static getInstance(){return e=this,i=function*(){if(null!=Ie.get(t))return Ie.get(t);var e=yield St.isIncognito(window),n=new St(navigator,document,e);return Ie.set(t,n),(e=We.get(r.BROWSER_DETAILS))&&St.isBrowserUpdated(e,n)||We.set(t,n),n},new(n=(n=void 0)||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}));var e,n,i}static isIncognito(e){const t=e.RequestFileSystem||e.webkitRequestFileSystem;return new Promise((n=>{t?t(e.TEMPORARY,100,(()=>{n(!1)}),(()=>{n(!0)})):n(!1)}))}static getBrowserName(e,t){return-1!==e.indexOf("MSIE")||1==t.documentMode?St.BROWSER_NAMES.INTERNET_EXPLORER:-1_t(this,void 0,void 0,(function*(){let i=!0;e.key=It.getMorphedKey(e.key);let a=-1;for(let t=this.attributes.length-1;0<=t;t--)e.key===this.attributes[t].key&&(a=t);0<=a?(nt(this.attributes[a].value,e.value)&&(ut.log(2,t,"Duplicate attribute found: ",e),i=yield this.isAttibuteTrackingRequired(this.attributes[a].updated_at)),i&&(this.attributes[a].value=e.value,this.attributes[a].updated_at=(new Date).getTime())):(ut.log(2,t,"Adding attribute:",e),this.attributes.push(e)),this.save().then((()=>{n(i)}))}))))}isAttibuteTrackingRequired(e){return _t(this,void 0,void 0,(function*(){var t=yield nn.getWebSDKSettings();if(null===t.configs.userAttributeCacheTime)return!0;var n=(new Date).getTime()-e;return Math.round(n/1e3)>t.configs.userAttributeCacheTime}))}static getLocalUser(){const e=It.baseLogTag+".getLocalUser";return new Promise((t=>{var n;We.get(r.USER_DATA)?(ut.log(2,e,"Found user in localstorage"),n=We.get(r.USER_DATA),t(new It(n))):t(null)}))}static getCookieUser(){return new Promise((e=>{var t=It.baseLogTag+".getLocalUser";Ue.get(r.USER_DATA)?(ut.log(2,t,"Found user in cookie"),t=Ue.get(r.USER_DATA),e(new It(t))):e(null)}))}static getMigrationUser(){const e=It.baseLogTag+".getLocalUser";return new Promise((t=>{var n=localStorage.getItem(r.OLD_SDK.USER_DATA);if(n)try{var i=JSON.parse(n);if(i.is_new_sdk_migrated)t(null);else{const e=new It({deviceAdded:Te(i,"device_add",!1),deviceUuid:Te(i,"uuid",(0,ft.v4)())}),n=Te(i,"user_attrs",{});for(const t in n)n.hasOwnProperty(t)&&e.attributes.push(new yt(t,n[t]));var a=localStorage.getItem(r.OLD_SDK.PUSH_TOKEN);null!=a&&"NA"!==a&&"null"!==a&&(e.subscribedToOldSdk=!0),t(e)}}catch(n){ut.error(1,e,"Error getting the migration user. Resolving as a new user."),ut.error(1,e,n),t(null)}else t(null)}))}static getSync(){return It.instance}static get(){const e=It.baseLogTag+".get";return null!=Tt||(Tt=new Promise((t=>{Et.getInstance().then((n=>{nn.getWebSDKSettings().then((n=>{var i=It.getLocalUser(),a=n.isDomainLevelStorage?It.getCookieUser():"resolved",o=It.getMigrationUser();Promise.all([i,a,o]).then((i=>{const a=i[0],o=i[1],s=i[2];s?s.save().then((n=>{var i=localStorage.getItem(r.OLD_SDK.USER_DATA);if(i){const e=JSON.parse(i);e.is_new_sdk_migrated=!0,localStorage.setItem(r.OLD_SDK.USER_DATA,JSON.stringify(e))}ut.log(1,e,"User resolved from older SDK: ",n),t(n)})):(()=>{var i;if(o&&"resolved"!==o)ut.log(1,e,"User resolved from cookie: ",o),o.save().then((e=>{t(e)}));else{ut.log(1,e,"Local user: ",a);const o=new It(a);n.isPushSubBilling&&null!==(i=We.get(r.SUBSCRIPTION_DETAILS))&&void 0!==i&&i.token&&(o.deviceAdded=!0),o.save().then((e=>{t(e)}))}})()})).catch((t=>{ut.log(1,e,"Error in fetching/creating user",t)}))})).catch((t=>{ut.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}))}))),Tt}static logout(){return new Promise((e=>{Tt=null,e(!(this.instance=null))}))}save(){It.baseLogTag,It.isAmpEnabled()&&(this.deviceUuid=Ue.get("moe_uuid")),We.get("WEB_SETTINGS");var e=We.get(r.WEB_SETTINGS);return null!=e&&e.configs.isWebPersonalisationModuleEnabled&&(this.deviceUuid=this.deviceUuid||window.MoeWebP.deviceUuid),It.instance=this,new Promise((e=>{We.set(r.USER_DATA,this),Ue.setRaw(Z,It.instance.deviceUuid),e(this)}))}static isAmpEnabled(){const e=Ue.get(Z);return e&&e.includes("amp")}getAttribute(e){let t=null;return e=It.getMorphedKey(e),this.attributes.map((n=>{n.key===e&&(t=n.value)})),t}indexOfAttribute(e){let t=-1;return e=It.getMorphedKey(e),this.attributes.map(((n,i)=>{n.key===e&&(t=i)})),t}static getMorphedKey(e){switch(e){case"id":e=A;break;case"email":e=w;break;case"name":e=D;break;case"first_name":e=O;break;case"last_name":e=C;break;case"mobile":e=P;break;case"gender":e=R;break;case"birthday":e=N}return e}}It.baseLogTag="UserModel",It.isResolved=!1,It.instance=null;class At{constructor(){var e=At.baseLogTag+".constructor";const t=void 0;let n=It.getSync().getAttribute("id");n=n?n.toString():void 0;const i=window.analytics;let a,r;if(i){r=i._VERSIONS;try{a=i.user().anonymousId()}catch(t){ut.error(1,e,"Error getting anonymous id from segment api",t)}}this.c=void 0,this.h="",this.identifiers=void 0,(n||a)&&(this.identifiers={moe_user_id:n,segment_id:a}),this.meta={bid:(0,ft.v4)(),segmentSdkData:i?r:void 0}}}At.baseLogTag="ReportPostData";class wt{constructor(e,t,n){wt.baseLogTag,this.type=e,this.getParams=t,this.event=n,this.postData=new At;const i={},a={};for(const e of n.attributes)if(e&&null!=e.key&&(this.status=wt.STATUS.VALID,null!=e.value))if("function"==typeof e.value.getMonth){const t={};t[e.key]=Math.round(e.value.getTime()-6e4*e.value.getTimezoneOffset()),null==a.timestamp&&(a.timestamp=[]),a.timestamp.push(t)}else i[e.key]=e.value;this.postData.e=n.name,this.postData.a=i,this.postData.c=He(a)?void 0:a,window&&window.location&&null!=window.location.href&&(this.postData.url=window.location.href)}}wt.baseLogTag="ReportClass",(bt=(Ji=wt=wt||{}).STATUS||(Ji.STATUS={}))[bt.INVALID=0]="INVALID",bt[bt.VALID=1]="VALID",(Ji=Ji.REPORT_ADD_TYPE||(Ji.REPORT_ADD_TYPE={}))[Ji.USER_ATTRIBUTE=0]="USER_ATTRIBUTE",Ji[Ji.EVENT=1]="EVENT";const Dt=wt;function Ot(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}function Ct(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}const Pt=class{constructor(e){this.isBeaconDisabled=this.parseSentryBooleanFlag(Te(e,"b_d",!1)),this.isCardsModuleEnabled=this.parseSentryBooleanFlag(Te(e,"c_s",!1)),this.isWebPersonalisationModuleEnabled=this.parseSentryBooleanFlag(Te(e,"c_w_p_e",!1)),this.eventBatchCount=Te(e,"e_b_c",10),this.logLevel=Te(e,"log_level"),this.periodicFlushTime=Te(e,"p_f_t",30),this.isBatchingEnabled=this.parseSentryBooleanFlag(Te(e,"s_e_b_e",!1)),this.sessionInactiveDuration=Te(e,"s_i_d",1800),this.isRemoteLoggingEnabled=this.parseSentryBooleanFlag(Te(e,"s_log",!1)),this.sourceExtraParams=Te(e,"src_ext",[]),this.whitelistedEvents=Te(e,"w_e",[]),this.blacklistedEvents=Te(e,"b_e",[]),this.isAppActive=this.parseSentryBooleanFlag(Te(e,"a_s",!0)),this.remoteLogTracking=this.isRemoteLoggingEnabled&&!!this.logLevel,this.subscriberBasedBillingAttributes=Te(e,"s_b_a",[]),this.isMultiIdEnabled=this.parseSentryBooleanFlag(Te(e,"m_i_e",!1)),this.userAttributeCacheTime=Te(e,"u_a_c_t",43200)}parseSentryBooleanFlag(e="blocked"){return"allowed"===e||!0===e||"true"===e}};class Rt{constructor(){this.settingsVersion="V1",this.isDomainLevelStorage=!1,this.isConfigured=!1,this.isPushSubBilling=!1,this.platformSettings=new xt,this.optInConfig=new Nt,this.configs=new Pt({})}static parseOldSettings(e){const t=Rt.baseLogTag+".parseOldSettings",n=new Rt;if((n.oldWebData=e).webData&&!He(e.webData))if(n.isConfigured=!0,e=e.webData,n.configs=new Pt(e),n.settingsVersion=Te(e,"wp_settings_version","V1"),"V2"===n.settingsVersion)n.isDomainLevelStorage=Te(e,"domain_level_storage",!1),n.isPushSubBilling=Te(e,"sub_billing",!1),n.platformSettings.chrome.domainType=Te(e,"is_enabled",!1)?"https":"na",n.platformSettings.chrome.subscriptionMode=Te(e,"web_push_platform_data.chrome.subscription_mode","vapid"),n.platformSettings.chrome.vapidPublicKey=Te(e,"web_push_platform_data.chrome.vapid_public_key",null),n.platformSettings.firefox.subscriptionMode=Te(e,"web_push_platform_data.firefox.subscription_mode","vapid"),n.platformSettings.firefox.vapidPublicKey=Te(e,"web_push_platform_data.firefox.vapid_public_key",null),n.optInConfig.reappearTime=Te(e,"prompt_again",24),n.optInConfig.type={"1-step":"ONE_CLICK","2-step":"TWO_STEP","self-handled":"SELF_HANDLED"}[Te(e,"opt_in_type","2-step")],n.optInConfig.showOverlay=Te(e,"show_overlay",!1),n.optInConfig.loadTime=Te(e,"load_time",0),n.optInConfig.type!==Nt.TYPE.SELF_HANDLED&&(i=e,a=n.optInConfig.type,r=n.optInConfig.showOverlay,new Promise(((e,t)=>{a===Nt.TYPE.ONE_CLICK&&r?e(function(e,t){return function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){let n="",i="";const a=yield Et.getInstance();return n=a.isFirefox()?(i=Ot(`\n \n \n `,t),Ct(`\n \n \n `,t)):a.isOpera()?(i=Ot(`\n \n \n `,t),Ct(`\n \n \n `,t)):(i=Ot(`\n \n \n `,t),Ct(`\n \n \n `,t)),{mobileUI:n,webUI:i}}))}(Te(i,"overlay",null),Te(i,"hide_moe_branding",!1)).then((e=>e))):a===Nt.TYPE.TWO_STEP&&e(function(e,t){var{web:n,mobile:e}=e,n=`\n
\n
\n \n \n
\n
\n \n ${n.banner.title.text}\n \n

\n ${n.banner.body.text}\n

\n
\n ${t?"":``}\n
\n \n \n ${n.allow_button.text}\n \n
\n
\n \n \n `;return{mobileUI:`\n
\n
\n \n \n ${e.nudge.title.text}\n \n
\n
\n
\n \n \n
\n
${t?"":``}\n
\n `,webUI:n}}(Te(i,"opt_in_preview",null),Te(i,"hide_moe_branding",!1))),t("Its 1-step without overlay, so not constructing it.")})).then((e=>{n.optInConfig.softAskConfig.desktop.customHTML=e.webUI,n.optInConfig.softAskConfig.mobile.customHTML=e.mobileUI})).catch((e=>{ut.error(2,t,"Failed to construct overlay for hard ask: ",e)})));else{"false"===Te(e,"domain_level_storage",!1)?n.isDomainLevelStorage=!1:n.isDomainLevelStorage=!(!Te(e,"domain_level_storage",!1)&&"true"!==Te(e,"domain_level_storage",!1));let i=Te(e,"PushSubBilling",!1);"false"===i?i=!1:"true"===i&&(i=!0),(e=>"boolean"==typeof e)(i)||(i=!1),n.isPushSubBilling=i,n.platformSettings.chrome.domainType=Te(e,"webPushPlatformData.chrome.domain_type",""),n.platformSettings.chrome.subscriptionMode=Te(e,"webPushPlatformData.chrome.subscriptionMode","normal"),n.platformSettings.chrome.vapidPublicKey=Te(e,"webPushPlatformData.chrome.vapidPublicKey",null),n.platformSettings.firefox.enabled=!0,n.platformSettings.firefox.subscriptionMode=Te(e,"webPushPlatformData.firefox.subscriptionMode","normal"),n.platformSettings.firefox.vapidPublicKey=Te(e,"webPushPlatformData.firefox.vapidPublicKey",null),n.platformSettings.safari.websitePushId=Te(e,"webPushPlatformData.safari.websitePushId",null),null==n.platformSettings.safari.websitePushId?n.platformSettings.safari.enabled=!1:n.platformSettings.safari.enabled=!0,n.optInConfig.reappearTime=parseInt(Te(e,"promptAgain",24)),Te(e,"call_push_moengage",!0)?Te(e,"banner.banner_flag",null)?n.optInConfig.type=Nt.TYPE.TWO_STEP:n.optInConfig.type=Nt.TYPE.ONE_CLICK:(n.optInConfig.type=Nt.TYPE.SELF_HANDLED,n.optInConfig.reappearTime=0),n.optInConfig.showOverlay=Te(e,"show_overlay",!1),n.optInConfig.loadTime=Te(e,"load_time",0),n.optInConfig.softAskConfig.desktop.customHTML=Te(e,"bannerHtml.web",null),n.optInConfig.softAskConfig.mobile.customHTML=Te(e,"bannerHtml.mweb",null),Be.get().disableCookies&&(n.isDomainLevelStorage=!1,ut.warn(2,t,"Cookies Storage Been Disabled"))}else n.isConfigured=!1;var i,a,r;return n}}Rt.baseLogTag="SdkSettings";class Nt{constructor(){this.type=Nt.TYPE.NA,this.reappearTime=24,this.softAskConfig={desktop:new Lt,mobile:new Lt}}}class Lt{constructor(){this.customHTML=null}}(Ji=(Ji=Nt=Nt||{}).TYPE||(Ji.TYPE={})).NA="NA",Ji.ONE_CLICK="ONE_CLICK",Ji.TWO_STEP="TWO_STEP",Ji.SELF_HANDLED="SELF_HANDLED";class Mt{constructor(){this.enabled=!1,this.websitePushId=null}}class kt{constructor(){this.enabled=!1,this.isServiceWorkerRoot=!0,this.serviceWorkerFilename="serviceworker.js",this.subscriptionMode="normal",this.vapidPublicKey=null,this.domainType=""}}(Ji=(Ji=kt=kt||{}).DOMAIN_TYPE||(Ji.DOMAIN_TYPE={})).NA="NA",Ji.HTTPS="https",Ji.MUTLI="multi";class xt{constructor(){this.safari=new Mt,this.chrome=new kt,this.firefox=new kt}}const Bt=Rt;class Ut{static initialize(){return e=this,n=function*(){if(null==Ut.ready){Ut.offlineDataStore=_e.createInstance({driver:[_e.INDEXEDDB],name:ie,storeName:ae.NAME});const t=_e.createInstance({driver:[_e.INDEXEDDB],name:ie,storeName:"moe_data"}),n=_e.createInstance({driver:[_e.INDEXEDDB],name:ie,storeName:"moe_backup"});var e=[Ut.offlineDataStore.ready(),t.ready(),n.ready()];Ut.ready=Promise.all(e)}return yield Ut.ready},new(t=(t=void 0)||Promise)((function(i,a){function r(e){try{s(n.next(e))}catch(e){a(e)}}function o(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var n;e.done?i(e.value):((n=e.value)instanceof t?n:new t((function(e){e(n)}))).then(r,o)}s((n=n.apply(e,[])).next())}));var e,t,n}}class Ft{constructor(e){this.EVENT_ACTION=e.event.name,this.EVENT_ATTRS=e.event.attributes&&Wt(e.event.attributes),this.EVENT_G_TIME=(new Date).getTime().toString(),this.EVENT_L_TIME=it(),this.EVENT_ATTRS_CUST=e.postData.c,this.N_I_E=e.postData.nie}}Ft.baseLogTag="ReportAddViewEvent";const Wt=e=>{const t={};return e.forEach((e=>{t[e.key]=e.value})),t};class Ht{static visibilityChange(){"hidden"===document.visibilityState&&(Ht.windowClosed||zt.reactToTriggerEvents())}static removeEventListeners(){document.removeEventListener("visibilitychange",Ht.visibilityChange,!1)}static addListeners(){document.addEventListener("visibilitychange",Ht.visibilityChange,!1)}}Ht.windowClosed=!1;const Kt=Ht;function Gt(e,t){try{var n=$e();return!(null==e||!e.configs.isBatchingEnabled||("web"!==n||t.name!==Et.BROWSER_NAMES.CHROME&&t.name!==Et.BROWSER_NAMES.EDGE&&t.name!==Et.BROWSER_NAMES.OPERA)&&("mobile"!==n||Et.isIOS()||t.name!==Et.BROWSER_NAMES.CHROME&&t.name!==Et.BROWSER_NAMES.OPERA)||!navigator.sendBeacon)}catch(e){ut.error(1,"Utils.batching.isBatchingSupported",e)}}class Vt{static getRemoteLogsBatchRequestOptions(e){return new Promise((t=>{nn.collectGetParams().then((n=>{n={query_params:Object.assign(Object.assign({},n),{unique_id:n.unique_id,os:"web"===n.os?"Web":"mWeb"}),logs:[...e]},t(n)}))}))}static sendBatchOfLogs(e){const t=nn.baseLogTag+".sendBatchOfLogs";return new Promise(((n,i)=>{Vt.getRemoteLogsBatchRequestOptions(e).then((i=>{var a=(a=Be.get()).baseDomainName+fe+i.query_params.os.toLowerCase()+"/"+a.appId;ht.post(a,{postData:i}).then((()=>{ut.log(1,t,"[sendBatchOfLogs] batch payload: "+JSON.stringify(e)),ut.log(1,t,"Batch Remote Logs sent to MoEngage successfully"),Vt.batchRemoteLogsApiRetries=1,n(!0)})).catch((n=>{ut.log(1,t,"Batch Remote Logs API failed",n),this.handleRemoteLogsFailure(e)}))}))}))}static handleRemoteLogsFailure(e){var t=nn.baseLogTag+".handleRemoteLogsFailure";ut.log(1,t,"Retry Batch Logs Failed API",Vt.batchRemoteLogsApiRetries),Vt.batchRemoteLogsApiRetries<3&&setTimeout((()=>{Vt.batchRemoteLogsApiRetries++,Vt.sendBatchOfLogs(e)}),3e3*Vt.batchRemoteLogsApiRetries)}static sendBeacon(e){Vt.getRemoteLogsBatchRequestOptions(e).then((e=>{var t=(t=Be.get()).baseDomainName+fe+e.query_params.os.toLowerCase()+"/"+t.appId+"?"+(new Date).getTime();ut.log(1,"RemoteLogsApi.sendBeacon","[sendBeacon] Remote Logs batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}}Vt.batchRemoteLogsApiRetries=1;var jt=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Yt{static updateEventStore(){$e()!==ye.TV&&_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:"moe_tracking",storeName:Q}).setItem(Q,Yt.reports)}static spliceReports(e=Yt.reports.length){return e=Yt.reports.splice(0,e),Yt.updateEventStore(),e}static spliceRemoteLogs(e=Yt.remoteLogs.length){return Yt.remoteLogs.splice(0,e)}static shouldCreateNewBatch(){return!Yt.lastbatchCreatedAt||(new Date).getTime()-Yt.lastbatchCreatedAt>=oe}static shouldCreateNewBatchForRemoteLogs(){return!Yt.lastRemoteLogsbatchCreatedAt||(new Date).getTime()-Yt.lastRemoteLogsbatchCreatedAt>=oe}static reactToTriggerEvents(){var e=Yt.baseLogTag+".reactToTriggerEvents";0jt(this,void 0,void 0,(function*(){(Yt.isOfflineBatchingSupported(t,e)||e.configs.remoteLogTracking)&&(yield Ut.initialize(),Yt.periodicSyncInterval&&Yt.clearInterval(),Yt.periodicSyncInterval=window.setInterval(Yt.periodicSync.bind(this,e.configs.periodicFlushTime),1e3*e.configs.periodicFlushTime),Kt.addListeners())}))))}static sendBatch(e){var t=Yt.baseLogTag+".sendBatch";try{nn.sendBatchOfReports(e).then((()=>{Yt.lastbatchCreatedAt=(new Date).getTime()}))}catch(e){ut.error(1,t,"Error in sending batch",e)}}static sendRemoteLogs(e){var t=Yt.baseLogTag+".sendRemoteLogs";try{Vt.sendBatchOfLogs(e).then((()=>{Yt.lastRemoteLogsbatchCreatedAt=(new Date).getTime()}))}catch(e){ut.error(1,t,"Error in sending batch of remote logs",e)}}static createBatch(e){0{t(e)})),Te(qt.topicListeners,e.topic,[]).map((t=>{t(e)}))}static broadcastToWindow(e){window&&window.dispatchEvent(new CustomEvent(e.topic,{detail:{name:e.name,data:e.data||null}}))}static deprecatedSdkCallback(e){window.dispatchEvent(new CustomEvent("MOE_OPT_IN",{detail:e}))}static resetAllListeners(){qt.listeners=[],qt.topicListeners={}}static resetListeners(){qt.listeners=[]}}qt.listeners=[],qt.topicListeners={};const $t=qt;class Jt{constructor(e,t,n=!0){this.name=e,this.attributes=t,this.timestamp=(new Date).getTime(),n&&this.attributes.push(new yt("URL",location.href))}static createUserAttributeEvent(e){return new Promise(((t,n)=>{const i=[],a=e.key;switch(e.key){case"id":e.key=A;break;case"email":e.key=w;break;case"name":e.key=D;break;case"first_name":e.key=O;break;case"last_name":e.key=C;break;case"mobile":e.key=P;break;case"gender":e.key=R;break;case"birthday":e.key=N}i.push(e),It.get().then((n=>{var r=n.indexOfAttribute("oldUniqueIds");e.key===A&&-1{It.get().then((a=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){try{var r=new yt("moe_logged_in_status",!!a.getAttribute("id"));const s=new vt;var o=new yt("moe_first_visit",s.getNumberOfSessions()<=1);t.push(r,o),i(new Jt(e,t,n))}catch(r){ut.error(1,"Event.createEvent","Error occurred in create events ",r)}}))))}))}}class Xt{static addEvent(e){Xt.history.push(e),Xt.listeners.forEach((t=>{t(e)}))}static getHistory(){return Xt.history}static addEventListener(e){Xt.listeners.push(e)}static clear(){Xt.history=[]}static clearListeners(){Xt.listeners=[]}}Xt.history=[],Xt.listeners=[];class Qt{static track(e,t,n){const i="MoEngage.event.trackEvent";return new Promise(((a,r)=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){var r;let o;n=!!n;try{o=yield nn.getWebSDKSettings()}catch(r){return ut.error(1,i,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),void a(!1)}if("string"==typeof e&&e)if(o.configs.blacklistedEvents&&o.configs.blacklistedEvents.includes(e))ut.error(1,i,`This event "${e}" is blacklisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is blacklisted.`});else if(!ce.includes(e)||o.configs.whitelistedEvents&&o.configs.whitelistedEvents.includes(e))try{const s=[];if(null==t||null!==t&&t===Object(t)&&"[object Object]"===Object.prototype.toString.call(t)){for(const e in t=null==t?{}:t)t.hasOwnProperty(e)&&s.push(new yt(e,t[e]));const i=new vt;yield i.initiateSessionAndSource(o);const l=yield Jt.createEvent(e,s);Xt.addEvent(l),null!=o&&o.configs.isWebPersonalisationModuleEnabled&&null!==(r=window.MoeWebP)&&void 0!==r&&r.handleInSessionEvent(l),nn.collectGetParams().then((t=>{lt(e)&&delete t.push_id;const r=new Dt(Dt.REPORT_ADD_TYPE.EVENT,t,l);var o={session_id:i.getSessionKey(),start_time:i.getSessionStartTime(),background_initiated:0};const s=[];(t=i.getActiveSource())&&(i.setCurrentSource(t),s.push(t)),r.postData.meta.session=o,s.length&&(r.postData.meta.source=s),i.isNonEventInteractive(l)&&(r.postData.nie=1),nn.reportAdd(r,n).then((()=>{i.isNonEventInteractive(l)||i.extendSession(),a(!0)}))}))}else ut.error(1,i,"Event attributes were not passed a key-value pair object for event: "+e),a({error:5002,message:"Event value needs to be a key-value pair object"})}catch(r){ut.error(1,i,"Error occurred in tracking events ",r)}else ut.error(1,i,`This event "${e}" has not been whitelisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is not whitelisted.`});else ut.error(1,i,"Event name not a string or null or empty string:",e),a({error:5001,message:"Event name can not be null"})}))))}}var Zt,en,tn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class nn{static deviceAdd(){return new Promise(((e,t)=>{const n=Be.get();return nn.collectGetParams(ve).then((i=>{i={queryParams:i=Object.assign(Object.assign({},i),{url:window.location.href})},ht.post(n.baseDomainName+ve,i).then((()=>{this.trackDeviceAttributes(),It.get().then((t=>{t.deviceAdded=!0,t.save().then((()=>{on.startPeriodicClear(r.Q.REPORT),nn.onDeviceAdd.res(),e(!0)}))}))})).catch((e=>{Ae.enqueue(r.Q.DEVICE,!0),t(!1)}))}))}))}static trackDeviceAttributes(){return new Promise(((e,t)=>tn(this,void 0,void 0,(function*(){let t=$e().toUpperCase();t="WEB"===t?"DESKTOP":t,Qt.track(E,{deviceType:t});let n=We.get(r.PUSH_TOKEN);n||"granted"===(yield window.Moengage.device.getPermissionState())&&(n=!0),Qt.track(E,{[me]:!!n,source:"deviceAdd"}),We.set(r.OPTED_STATUS_TRACK_TIME,Date.now()),e(null)}))))}static reportAdd(e,t){const n=nn.baseLogTag+".reportAdd";return new Promise(((i,a)=>(t=!!t,nn.getWebSDKSettings().then((o=>{o.isPushSubBilling?It.get().then((o=>{o.deviceAdded?nn.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)})):(Ae.enqueue(r.Q.REPORT,e),ut.log(1,n,"Report added to queue as device not added yet:",e.event.name),ut.log(2,n,"Event Queued:",e.event.name),e.type===Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE&&(nn.isPushSubAttributeAccepted(e.event.attributes[0].key)?(ut.log(1,n,"Attribute accepted for push sub billing."),nn.deviceAdd()):ut.log(2,n,"Attribute NOT accepted for push sub billing.")),i(!0))})):nn.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)}))})).catch((e=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)})))))}static sendBroadcast(e){le.NAMES.includes(e.event.name)&&$t.broadcastToWindow({topic:le.TOPIC,name:e.event.name,data:e.event.attributes})}static getSegmentId(){const e=window.analytics;if(e&&e.user)return e.user().anonymousId()}static getBatchRequestOptions(e){return new Promise((t=>{nn.collectGetParams(re).then((n=>{var i=nn.getSegmentId()||"";const a=It.getSync(),r=new vt;var o={session_id:r.getSessionKey(),start_time:r.getSessionStartTime(),background_initiated:0};const s=[];var l=r.getActiveSource();l&&(r.setCurrentSource(l),s.push(l)),o={query_params:n,identifiers:{moe_user_id:a.getAttribute("id")||void 0,segment_id:i||void 0},meta:{bid:(0,ft.v4)(),request_time:(new Date).toISOString(),session:o,source:s.length?s:void 0},viewsCount:e.length,viewsInfo:[...e]},t(o)}))}))}static addReportsToOfflineDB(e,t){return tn(this,void 0,void 0,(function*(){const n=nn.baseLogTag+".addReportsToOfflineDB";var i=yield nn.getBatchRequestOptions([]);yield Ut.offlineDataStore.setItem(t||"report_add_"+(new Date).getTime(),e),yield Ut.offlineDataStore.setItem("requestMetaData",i),navigator.serviceWorker&&navigator.serviceWorker.ready.then((e=>{e.sync?e.sync.register("moe_offline_data_sync").then((()=>{ut.log(2,n,"offline sync event registered")})).catch((e=>{ut.error(1,n,"Service worker sync error",e)})):ut.log(2,n,"Service worker sync unavailable")}))}))}static sendReportBeacon(e,t,n){var i=nn.baseLogTag+".sendReportBeacon";try{if(!e&&navigator.sendBeacon&&navigator.sendBeacon(t,new Blob([JSON.stringify(n)],{type:"text/plain;charset=UTF-8"})))return!0}catch(e){ut.error(2,i,"Failed to send Report call with Beacon:",e)}return!1}static sendBatchOfReports(e){const t=nn.baseLogTag+".sendBatchOfReports";return new Promise(((n,i)=>{nn.getBatchRequestOptions(e).then((a=>{var r=Be.get();const o=r.baseDomainName+re+r.appId;nn.getWebSDKSettings().then((i=>window.navigator.onLine?nn.sendReportBeacon(i.configs.isBeaconDisabled,o,a)?(ut.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),ut.log(1,t,"Batch sent to MoEngage successfully through beacon"),void n(!0)):void ht.post(o,{postData:a}).then((()=>{ut.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),ut.log(1,t,"Batch sent to MoEngage successfully"),n(!0)})).catch((a=>{ut.error(1,t,"Batch Report add API failed",a),n(this.sendToOfflineTracking(e,a,i))})):this.sendToOfflineTracking(e,"User is offline.",i))).catch((e=>{ut.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),i(e)}))}))}))}static sendToOfflineTracking(e,t,n){const i=nn.baseLogTag+".sendToOfflineTracking";return ut.error(1,i,"Add Report API failed, adding reports to offline db. ",t),new Promise(((a,r)=>{Et.getInstance().then((o=>{zt.isOfflineBatchingSupported(o,n)?(nn.addReportsToOfflineDB(e).then((()=>{ut.log(2,i,"Network offline: Batch added to offline db")})),a(!0)):r(t)})).catch((()=>{r(t)}))}))}static reportAddInternal(e,t){const n=nn.baseLogTag+".reportAddInternal";return new Promise(((i,a)=>{nn.getWebSDKSettings().then((a=>{Et.getInstance().then((o=>{if(t){const t=nn.getUpdatedPushDetails();for(const n in t)!t.hasOwnProperty(n)||lt(e.event.name)&&"push_id"===n||(e.getParams[n]=t[n]);var s=Je();const n={queryParams:Object.assign(Object.assign({},e.getParams),s)};if(e.postData.nie){const t=Object.assign({},e);delete t.postData.meta.source,delete t.postData.meta.session,n.postData=t.postData}else n.postData=e.postData;s=Be.get().baseDomainName,s+=ve,ht.post(s,n).then((()=>{let t=$e().toUpperCase();t="WEB"===t?"DESKTOP":t,Qt.track(E,{deviceType:t}),i(nn.handleReportAddSuccess(e))})).catch((t=>{Gt(a,o)?Ae.enqueue(r.Q.DEVICE,e):nn.handleReportAddFailure(e,t)}))}else Gt(a,o)?(zt.addReport(e,a.configs.eventBatchCount)&&(ut.log(1,n,"Event batched successfully:",e.event),this.addEventsToIDB(e.event)),i(!0)):(s=new Ft(e),st(s)?(ut.error(1,n,ct(s.EVENT_ACTION)),i(!1)):nn.sendBatchOfReports([s]).then((()=>{i(nn.handleReportAddSuccess(e))})).catch((t=>{nn.handleReportAddFailure(e,t)})))}))})).catch((e=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)}))}))}static handleReportAddSuccess(e){var t=nn.baseLogTag+".handleReportAddSuccess";return e.type===Dt.REPORT_ADD_TYPE.EVENT?(ut.log(1,t,"Event tracked successfully:",e.event),this.addEventsToIDB(e.event)):e.type===Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE&&ut.log(1,t,"User attribute added successfully:",e.event.attributes),nn.addReportApiRetries=1,!0}static handleReportAddFailure(e,t){var n=nn.baseLogTag+".handleReportAddFailure";ut.error(1,n,"Add Report API failed",t),e.type===Dt.REPORT_ADD_TYPE.EVENT?ut.log(1,n,"Queueing unsuccessful event tracking:",e.event):e.type===Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE&&ut.log(1,n,"Queueing unsuccessful user attribute add:",e.event.attributes),nn.addReportApiRetries<3&&setTimeout((()=>{nn.addReportApiRetries++,Ae.enqueue(r.Q.REPORT,e),on.startPeriodicClear(r.Q.REPORT)}),3e3*nn.addReportApiRetries)}static checkIfTokenValid(e){const t=Be.get().baseDomainName+Se,n=Be.get();return new Promise((i=>{e?It.get().then((a=>{a={queryParams:{app_id:n.appId,unique_id:a.deviceUuid,push_id:e}},ht.post(t,a).then((e=>{200===e.status?i(!0):i(!1)})).catch((e=>{i(!1)}))})):i(!1)}))}static isAppBlocked(e){return!(!e||!1!==e.configs.isAppActive)}static getWebSDKSettings(){return new Promise(((e,t)=>{let n=Be.get();var i,a;null!=n&&null!=n.appId||(n=new Be(We.get(r.INIT_DATA))),nn.sdkSettings?nn.isAppBlocked(nn.sdkSettings)?t(!1):e(nn.sdkSettings):(i=(new Date).getTime(),null==(a=We.get(r.SETUP_TIME))||0{e(t)})).catch((e=>{t(!1)})):We.get(r.WEB_SETTINGS)?(nn.sdkSettings=We.get(r.WEB_SETTINGS),nn.isAppBlocked(nn.sdkSettings)?t(!1):e(nn.sdkSettings)):nn.getAndPersistWebSettings(n).then((t=>{e(t)})).catch((e=>{t(!1)})))}))}static getAndPersistWebSettings(e){const t=nn.baseLogTag+".getAndPersistWebSettings";return new Promise(((n,i)=>tn(this,void 0,void 0,(function*(){try{var a={queryParams:{app_id:(e=null==e.appId?new Be(We.get(r.INIT_DATA)):e).appId}};ut.log(1,t,"Fetching latest web sdk settings for",e.appId);var o=yield ht.get(e.baseDomainName+"v2/websdksettings",a);ut.log(1,t,"Fetching config settings for",e.appId);let h=o.responseText;"string"==typeof h&&(h=JSON.parse(h));var s=qe()?"mweb":"web",l=e.baseDomainName+$+s+"/"+e.appId;try{var c,d=We.get(r.USER_DATA),g={postData:{query_params:{unique_id:d&&d.deviceUuid}}},u=yield ht.post(l,g);ut.log(1,t,"Fetched latest web and config settings"),200===u.status&&(c=u.responseText,c=JSON.parse(c),h.webData=Object.assign(Object.assign({},h.webData),c))}catch(e){ut.error(1,t,"Config API failed")}var p=(new Date).getTime();if(h=Bt.parseOldSettings(h),We.set(r.WEB_SETTINGS,h),We.set(r.SETUP_TIME,p),nn.isAppBlocked(h))return void i(!1);nn.sdkSettings=h,n(h)}catch(a){ut.error(1,t,"Settings APi Failed: ",a),nn.webSdkApiRetries<3?setTimeout((()=>{nn.webSdkApiRetries++,n(nn.getAndPersistWebSettings(e))}),3e3*nn.webSdkApiRetries):i(!1)}}))))}static collectGetParams(e){return new Promise(((t,n)=>{It.get().then((n=>{let i=Be.get();null!=i&&null!=i.appId||(i=new Be(We.get(r.INIT_DATA)));const a=new Date,o=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds());Et.getInstance().then((a=>{var s,l=Je(e,[Ee,ve,re]);const c=Object.assign({os:a.os,os_platform:a.osPlatform,is_incognito:a.isIncognito,app_id:i.appId,os_ver:a.name,sdk_ver:"5.0.690",model:a.name,app_ver:"1.0",device_ts:Number(o),device_tz_offset:(-6e4*(new Date).getTimezoneOffset()).toString(),unique_id:n.deviceUuid,device_tz:(new Date).getTimezoneOffset().toString()},l);l=n.getAttribute("cart_token"),Ye()&&l&&null!==(s=this.sdkSettings)&&void 0!==s&&s.configs.isMultiIdEnabled&&e!==ve&&(c.cart_token=l),null!=(l=We.get(r.PUSH_TOKEN))&&"NA"!==l&&""!==l&&"null"!==l&&(c.push_id=l),a.isWebPushCompatible()&&(Ve(this.sdkSettings.platformSettings,a)?(c.subscription_type="vapid",c.vapid_public=je(this.sdkSettings.platformSettings,a)):c.subscription_type="normal"),null!=i.environment&&(c.environment=i.environment),a.name===Et.BROWSER_NAMES.SAFARI&&(c.websitePushId=this.sdkSettings.platformSettings.safari.websitePushId);var d=We.get(r.SUBSCRIPTION_DETAILS);if(null!=d&&null!=d.keys){for(const e in d.keys)c["keys_"+e]=encodeURI(d.keys[e]);null!=d.endpoint&&(c.endpoint=encodeURI(d.endpoint)),c.expirationTime=d.expirationTime}t(c)}))}))}))}static getUpdatedPushDetails(){const e={};var t=We.get(r.SUBSCRIPTION_DETAILS);if(null!=t){var n=We.get(r.PUSH_TOKEN);if(null!=n&&"NA"!==n&&""!==n&&"null"!==n&&(e.push_id=n),t.keys){for(const n in t.keys)e["keys_"+n]=encodeURI(t.keys[n]);null!=t.endpoint&&(e.endpoint=encodeURI(t.endpoint)),e.expirationTime=t.expirationTime}}return e}static isPushSubAttributeAccepted(e){var t;return!!(e===w||e===P||null!==(t=this.sdkSettings)&&void 0!==t&&t.configs.subscriberBasedBillingAttributes.includes(e))}static sendBeacon(e){if(!window.navigator.onLine)return this.sendToOfflineTracking(e,"User is offline.");nn.getBatchRequestOptions(e).then((e=>{var t=(t=Be.get()).baseDomainName+re+t.appId+"?"+(new Date).getTime();ut.log(1,"MoeApi.sendBeacon","[sendBeacon] batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}static addEventsToIDB(e){if($e()!==ye.TV){const t=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:J,storeName:X});null!=t&&t.setItem(e.name,e)}}}nn.baseLogTag="MoeApi",nn.onDeviceAdd=new mt,nn.webSdkApiRetries=1,nn.offlineEvents=[],nn.addReportApiRetries=1;const an=n(967),rn=r.Q;class on{static clear(e){var t=on.baseLogTag+".clear";const n=[];for(;!Ae.isEmpty(e);)switch(e){case rn.REPORT:const i=Ae.dequeue(rn.REPORT);n.push((e=>{nn.reportAdd(i).then((()=>{e()}))}));break;case rn.DEVICE:Ae.dequeue(rn.DEVICE)&&n.push((e=>{nn.deviceAdd().then((()=>{e()}))}));break;default:ut.error(1,t,"Do not know how to handle queue with name:",e)}setTimeout((()=>{on.processing[e]=!0,an(n,5,((t,n)=>{on.processing[e]=!1}))}),0)}static startPeriodicClear(e){const t=on.baseLogTag+".startPeriodicCleanQ";on.clearInterval(e);var n=()=>{Ae.isEmpty(e)?(ut.log(1,t,"If you see multiple event tracks with same, they were captured over multiple visits or page refreshes."),Te(on.processing,e,!1)||on.clearInterval(e)):(on.clear(e),ut.log(1,t,"Starting periodic queue clear for",e))};n(),on.intervals[e]=setInterval(n,6e3)}static clearInterval(e){null!=on.intervals[e]&&(clearInterval(on.intervals[e]),on.intervals[e]=null)}}on.baseLogTag="QManager",on.intervals={},on.processing={},(Ji=Zt=Zt||{}).PROMPT="prompt",Ji.GRANTED="granted",Ji.DENIED="denied",Ji.DISMISSED="dismissed";class sn{static addCallback(e,t){null!=e&&null!=t&&(null==sn.callbacks[e]&&(sn.callbacks[e]=[]),sn.callbacks[e].push(t))}static getCallbacks(e){return sn.callbacks[e]||[]}static runCallbacks(e){sn.getCallbacks(e).forEach((e=>{e()}))}}sn.callbacks={};class ln{constructor(e){this.swRegisterPromise=null,this.swActiveRetries=1;const t=ln.baseLogTag+".constructor";this.sdkSettings=e,this.registerServiceWorker().then((e=>{this.sendDataToServiceWorker()})).catch((e=>{ut.error(1,t,"Error registering serviceworker:",e)}))}showHardAsk(){const e=ln.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{ln.isWebPushSupported().then((i=>{i?this.getCurrentPermissionState().then((i=>{this.registerServiceWorker().then((a=>{i!==Zt.DENIED?(ut.remoteLogTracking(1,"info",e,"Attempting to open hard ask"),Qt.track(v),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_ATTEMPTED}),this.showOverlay(),this.askPermission().then((n=>{this.hideOverlay(),ut.remoteLogTracking(2,"info",e,"Permission state after hard ask:",n),n===Zt.GRANTED?this.getPushTokenDetails().then((e=>{this.sendDataToServiceWorker(e.token),t({state:n,subscriptionDetails:e})})):(this.sendDataToServiceWorker(),t({state:n,subscriptionDetails:null}))})).catch((t=>{ut.error(1,e,t),n(W)}))):(ut.remoteLogTracking(1,"info",e,"Hard ask not shown as permission state is",i),t({state:i,subscriptionDetails:null}))})).catch((t=>{ut.error(1,e,"Error registering serviceworker:",t),n(t)}))})).catch((t=>{ut.error(1,e,"Registering service worker failed:",t),n(W)})):(ut.warn(1,e,"Web push not supported in current browser environment"),n(F))}))}))}sendDataToServiceWorker(e){return new Promise((t=>{nn.collectGetParams().then((t=>{var n;e&&(t.push_id=e||We.get(r.PUSH_TOKEN)||void 0),t.isBatchingEnabled=We.get(r.WEB_SETTINGS).configs.isBatchingEnabled,Ye()||null!==(n=Be.get())&&void 0!==n&&n.swScope?_e.createInstance({driver:[_e.INDEXEDDB],name:"moe_database",storeName:"moe_data"}).setItem("reportParams",{data:t}):navigator.serviceWorker.ready.then((()=>{this.sendDataToServiceWorkerOnControllerReady(t)}))}))}))}sendDataToServiceWorkerOnControllerReady(e){if(navigator.serviceWorker.controller){if("chrome-extension:"===window.location.protocol)return chrome.runtime.sendMessage({data:e});navigator.serviceWorker.controller.postMessage({data:e})}else this.swActiveRetries<3&&setTimeout((()=>{this.swActiveRetries++,this.sendDataToServiceWorkerOnControllerReady(e)}),500)}getCurrentPermissionState(){return Et.getInstance().then((e=>navigator.permissions&&!e.isSafari()?navigator.permissions.query({name:"notifications"}).then((e=>ln.parsePermissionState(e.state))).catch((e=>{})):new Promise((t=>{let n=Notification.permission;e.isSafari()&&"default"===n&&(n="prompt",We.get(he)&&(n="denied")),t(ln.parsePermissionState(n))}))))}getPushTokenDetails(){const e=ln.baseLogTag+".getPushTokenDetails";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((n=>{Et.getInstance().then((i=>{n!==Zt.GRANTED?t({token:null,raw:null}):this.registerServiceWorker().then((n=>{let a=null;const r={userVisibleOnly:!0};Ve(this.sdkSettings.platformSettings,i)&&(a=je(this.sdkSettings.platformSettings,i),r.applicationServerKey=Ke(a));const o=()=>{n.pushManager.subscribe(r).then((e=>{(e=>{const n=e.toJSON();var a=e.endpoint.substring(0,n.endpoint.lastIndexOf("/")+1);e=n.expirationTime;let r=n.endpoint.split("/")[n.endpoint.split("/").length-1];i.isEdge()&&(r=r.replace("?token=",""));const o={};if(n.keys)for(const e in n.keys)n.keys.hasOwnProperty(e)&&(o[e]=n.keys[e]);t({token:r,endpoint:a,keys:o,expirationTime:e,raw:n})})(e)})).catch((n=>{ut.error(1,e,"Error in subscribtion: ",n),t({token:null,raw:null})}))};n.pushManager.getSubscription().then((e=>{if(e)if("vapid"===this.sdkSettings.platformSettings.chrome.subscriptionMode&&e.options&&e.options.applicationServerKey){var t=Ge(e.options.applicationServerKey);[a,a+"=",a+"==",Ge(Ke(a))].indexOf(t)<0?e.unsubscribe().then((()=>{o()})):o()}else o();else o()}))})).catch((n=>{ut.error(1,e,"Error in getting push token: ",n),t({token:null,raw:null})}))}))}))}))}removeToken(){return We.remove(r.PUSH_TOKEN),We.remove(r.OPTED_STATUS_TRACK_TIME),We.remove(r.SUBSCRIPTION_DETAILS),Promise.resolve()}askPermission(){return new Promise(((e,t)=>{Notification.requestPermission().then((t=>{We.set(r.OPT_IN_SHOWN_TIME,Date.now()),Qt.track(p),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_SHOWN}),$t.deprecatedSdkCallback("opt_in_shown"),sn.runCallbacks(U.HARD_ASK_SHOWN),e(ln.parsePermissionState(t))})).catch((e=>{t(K)}))}))}registerServiceWorker(){const e=ln.baseLogTag+".registerServiceWorker";return"chrome-extension:"===window.location.protocol?navigator.serviceWorker.ready:(null!=this.swRegisterPromise||(this.swRegisterPromise=new Promise(((t,n)=>{if(ln.registeredServiceWorker)t(ln.registeredServiceWorker);else if("serviceWorker"in navigator){let i="serviceworker.js",a=!1;if(Be.get()&&null!=Be.get().swPath&&(i=Be.get().swPath,a=!0),"/"===i[0]||i.startsWith("http")||(i="/"+i),Ye())ut.log(1,e,"Removing scope in case of shopify."),this.registerScopedSW(i,/moengage/,t,n);else{let r="/";Be.get()&&null!=Be.get().swScope?(r=Be.get().swScope,this.registerScopedSW(i,r,t,n)):(a&&(ut.log(1,e,"Using user defined path to serviceworker:",i),r=i.substr(0,i.lastIndexOf("/")+1),ln.canSwBeRegisteredWithScope(r)||(ut.error(1,e,"Service worker can only be registered from same directory or child directory."),n(G))),navigator.serviceWorker.register(i,{scope:r}).then((i=>{ut.log(2,e,"Serviceworker registered"),navigator.serviceWorker.ready.then((n=>{ut.log(2,e,"Serviceworker ready"),ln.registeredServiceWorker=n,Be.get()&&Be.get().forceSwUpdate&&n.update(),t(n)})).catch((t=>{ut.error(1,e,"Service worker register failed:",t),n(W)}))})).catch((t=>{ut.error(1,e,"Service worker register failed:",t),n(W)}))),ut.log(1,e,"Scope for serviceworker:",r)}}else ut.error(1,e,"Service worker not supported"),n("Service worker not supported")}))),this.swRegisterPromise)}registerScopedSW(e,t,n,i){const a=ln.baseLogTag+".registerScopedSW";navigator.serviceWorker.register(e).then((e=>{ut.log(2,a,"Serviceworker registered"),navigator.serviceWorker.getRegistrations().then((e=>{e.forEach((e=>{setTimeout((()=>{e.active&&e.active.scriptURL.match(t)&&(ut.log(2,a,"Serviceworker ready"),ln.registeredServiceWorker=e,Be.get()&&Be.get().forceSwUpdate&&e.update(),n(e))}),100)}))})).catch((e=>{ut.error(1,a,"Service worker register failed:",e),i(W)}))})).catch((e=>{ut.error(1,a,"Service worker register failed:",e),i(W)}))}static canSwBeRegisteredWithScope(e){var t=window.location.pathname;return e=e,!((t=t).indexOf(e)<0)&&0<=t.substring(t.indexOf(e)).length}static isWebPushSupported(){return new Promise((e=>{Et.getInstance().then((t=>{!t.isIncognito&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&t.isWebPushCompatible()?e(!0):e(!1)}))}))}static parsePermissionState(e){return"prompt"===e?Zt.PROMPT:"granted"===e?Zt.GRANTED:"denied"===e?Zt.DENIED:"default"===e?Zt.DISMISSED:null}showNotification(e){const t=ln.baseLogTag+".showNotification";this.registerServiceWorker().then((n=>{e?e.title?e.body?(null==e.requireInteraction&&(e.requireInteraction=!0),n.showNotification(e.title,e)):ut.error(1,t,"Notification body can not be blank"):ut.error(1,t,"Notification title can not be blank"):ut.error(1,t,"Notification object can not be blank")})).catch((e=>{ut.error(1,t,"Error registering serviceworker:",e)}))}showOverlay(){if(this.sdkSettings.optInConfig.showOverlay&&this.sdkSettings.optInConfig.type===Nt.TYPE.ONE_CLICK){const e=document.createElement("div");e.id="moe-push-div",e.style.display="none",e.className="moe-push-class",Et.getInstance().then((t=>{t.isMobile?e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.mobile.customHTML:e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.desktop.customHTML;const n=document.body.firstChild;let i;if(n.parentNode.insertBefore(e,n),(t=t.name)===Et.BROWSER_NAMES.CHROME||t===Et.BROWSER_NAMES.OPERA_NEON?i=document.getElementsByClassName("moe_chrome"):t===Et.BROWSER_NAMES.FIREFOX?i=document.getElementsByClassName("moe_firefox"):t!==Et.BROWSER_NAMES.OPERA&&t!==Et.BROWSER_NAMES.SAFARI||(i=document.getElementsByClassName("moe_opera")),0===i.length)document.getElementById("moe-push-div").style.display="none";else for(let e=i.length-1;0<=e;e--)i[e].style.display="block";this.overlayTimer=window.setTimeout((()=>{""===e.style.opacity&&(e.style.display="block")}),1500),e.onclick=()=>{this.hideOverlay()}}))}}hideOverlay(){clearTimeout(this.overlayTimer);const e=document.getElementById("moe-push-div");null!=e&&(e.style.visibility="none",e.style.opacity="0",e.parentNode.removeChild(e))}}ln.baseLogTag="HTTPS-NotificationManager";const cn="Web push settings not configured on MoEngage dashboard: "+z;class dn{constructor(e,t){this.currentManager=null;var n=dn.baseLogTag+".constructor";this.config=e,this.browser=t,this.browser.isWebPushCompatible()?e.platformSettings.chrome&&("https"===e.platformSettings.chrome.domainType?"https"===function(){if(window)return"localhost"===window.location.hostname?"https":"http:"===window.location.protocol?"http":"https:"===window.location.protocol||"chrome-extension:"===window.location.protocol?"https":void 0}()?this.currentManager=new ln(e):ut.error(1,n,"Web Push does not work in http mode"):(Ye()&&new ln(e),ut.warn(1,n,"Web push settings not configured. Please configure at ",z))):this.browser.name===Et.BROWSER_NAMES.SAFARI&&e.platformSettings.safari&&"safari"in window&&"pushNotification"in window.safari&&(this.currentManager=null,ut.warn(1,n,"Web push is only supported on Safari 16 and above."))}showHardAsk(){const e=dn.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((i=>{null!=this.currentManager?i===Zt.PROMPT?this.currentManager.showHardAsk().then((n=>{n.state===Zt.DISMISSED?(Qt.track(m),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_DISMISSED}),$t.deprecatedSdkCallback("opt_in_dismissed"),sn.runCallbacks(U.HARD_ASK_DISMISSED),ut.log(1,e,"Hard ask was dismissed")):n.state===Zt.GRANTED?(Qt.track(h),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_ALLOWED,data:n.subscriptionDetails}),$t.deprecatedSdkCallback("opt_in_allowed"),sn.runCallbacks(U.HARD_ASK_ALLOWED),ut.log(1,e,"Push permission was granted"),ut.customLabel(1,e,"token",n.subscriptionDetails.token)):n.state===Zt.DENIED&&(Qt.track(f),Qt.track("Web Push Opt-in Denied"),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_DENIED}),$t.deprecatedSdkCallback("opt_in_blocked"),sn.runCallbacks(U.HARD_ASK_DENIED),ut.log(1,e,"Notification permission was denied")),t(n)})).catch((n=>{ut.error(1,e,"Error showing hard ask:",n),t({state:i,subscriptionDetails:null})})):(ut.log(1,e,"Not showing Hard Ask as current permission state is",i),this.getPushTokenDetails().then((n=>{ut.customLabel(1,e,"token",n.token),t({state:i,subscriptionDetails:n})})).catch((n=>{ut.warn(1,e,"Could not get push token details"),t({state:i,subscriptionDetails:null})}))):(ut.log(1,e,"MoEngage web push settings not configured. Please configure at",z),n(H))})).catch((e=>{n(e)}))}))}getCurrentPermissionState(){return null!=this.currentManager?this.currentManager.getCurrentPermissionState():Promise.reject(cn)}getPushTokenDetails(){return null!=this.currentManager?this.currentManager.getPushTokenDetails():Promise.reject(cn)}removeToken(){return null!=this.currentManager?this.currentManager.removeToken():Promise.reject(cn)}showNotification(e){var t=dn.baseLogTag+".showNotification";if(null!=this.currentManager)return this.currentManager.showNotification(e);ut.warn(1,t,cn)}}dn.baseLogTag="NotificationManager";class gn{constructor(e){this.mainDivs=[],this.config=e}showSoftAsk(){const e=gn.baseLogTag+".showSoftAsk";return new Promise(((t,n)=>{let i=this.config.optInConfig.loadTime;Et.getInstance().then((n=>{(this.config.optInConfig.type===Nt.TYPE.SELF_HANDLED||n.isSafari()&&this.config.optInConfig.type===Nt.TYPE.ONE_CLICK)&&(i=0),i&&ut.log(1,e,"Delay of",i," second(s) requested before opt-in flow"),setTimeout((()=>{!n.isWebPushCompatible()||this.config.optInConfig.type!==Nt.TYPE.TWO_STEP&&this.config.optInConfig.type!==Nt.TYPE.SELF_HANDLED?(We.set(r.SOFT_ASK_STATUS,en.NOT_SHOWN),t({showHardAsk:!0,softAskState:en.NOT_SHOWN})):this.showOptIn((()=>{ut.log(1,e,"Soft ask was shown"),We.set(r.OPT_IN_SHOWN_TIME,Date.now()),We.set(r.SOFT_ASK_STATUS,en.SHOWN),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_SHOWN}),$t.deprecatedSdkCallback("soft_ask_shown"),sn.runCallbacks(U.SOFT_ASK_SHOWN)}),(()=>{Qt.track(u),this.hideOptIn(),ut.log(1,e,"Soft ask was allowed"),We.set(r.SOFT_ASK_STATUS,en.ALLOWED),t({showHardAsk:!0,softAskState:en.ALLOWED}),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_ALLOWED}),$t.deprecatedSdkCallback("soft_ask_allowed"),sn.runCallbacks(U.SOFT_ASK_ALLOWED)}),(()=>{this.hideOptIn(),Qt.track(g),ut.log(1,e,"Soft ask was dismissed"),We.set(r.SOFT_ASK_STATUS,en.DISMISSED),t({showHardAsk:!1,softAskState:en.DISMISSED}),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_DISMISSED}),$t.deprecatedSdkCallback("soft_ask_closed"),sn.runCallbacks(U.SOFT_ASK_DISMISSED)}),(e=>{e=!!e,this.hideOptIn(),t({showHardAsk:e,softAskState:en.NOT_SHOWN})}))}),1e3*i)}))}))}showOptIn(e,t,n,i){const a=gn.baseLogTag+".showOptIn";if(this.config.optInConfig.type===Nt.TYPE.TWO_STEP){let r=document.getElementById("moe-push-div");null==r&&(r=document.createElement("div"),r.id="moe-push-div",r.className="moe-push-class"),Et.getInstance().then((o=>{let s=null;if(s=(o.isMobile?this.config.optInConfig.softAskConfig.mobile:this.config.optInConfig.softAskConfig.desktop).customHTML,null!=s){r.innerHTML=s;const o=document.body.firstChild;o.parentNode.insertBefore(r,o),this.moeDiv=r;const l=document.getElementById("optInText")||document.getElementById("optInTextConventional"),c=document.getElementById("moe-dontallow_button");null==l?(ut.error(1,a,"Error showing soft ask. Allow button id is missing"),i()):(e(),Qt.track(d),l.onclick=()=>{t()},c?c.onclick=()=>{n()}:window.moeRemoveBanner=()=>{n()})}else ut.error(1,a,"Error displaying soft ask"),i()}))}else if(this.config.optInConfig.type===Nt.TYPE.SELF_HANDLED){var r=Be.get();if(r.customSoftAsk){var o=document.getElementsByClassName(r.customSoftAsk.mainClass),s=document.getElementsByClassName(r.customSoftAsk.allowClass),l=document.getElementsByClassName(r.customSoftAsk.dismissClass);if(o.length<1)ut.error(1,a,"Could not find main class for the soft ask. Class name given:",r.customSoftAsk.mainClass),Et.getInstance().then((e=>{e.isWebPushCompatible()&&(ut.warn(1,a,"Proceeding to hard ask directly"),i(!0))}));else{e(),s.length<1&&(ut.warn(1,a,"Could not find any element for allow button. Class name given:",r.customSoftAsk.allowClass),ut.warn(1,a,"Docs for self-handled opt in available here - ",Y.SELF_HANDLED_DOCS)),l.length<1&&ut.warn(1,a,"Could not find any element for dismiss button. Class name given:",r.customSoftAsk.dismissClass);for(let e=o.length-1;0<=e;e--){const t=o[e];this.mainDivs.push(t),t.style.display="block"}for(let e=s.length-1;0<=e;e--)s[e].onclick=()=>{t()};for(let e=l.length-1;0<=e;e--)l[e].onclick=()=>{n()}}}else Et.getInstance().then((e=>{e.isWebPushCompatible()?(ut.warn(1,a,"No soft ask configured. Proceeding to hard ask directly. \n\nYou can ignore this message if you do not want any soft ask."),i(!0)):(ut.error(1,a,"Soft ask needs to be present in case of http implementation. Can not show hard ask otherwise."),i())}))}}hideOptIn(){null!=this.moeDiv&&(this.moeDiv.style.display="none"),0{e.style.display="none"}))}}gn.baseLogTag="SoftAskManager",(Ji=en=en||{}).SHOWN="shown",Ji.NOT_SHOWN="not shown",Ji.ALLOWED="allowed",Ji.DISMISSED="dismissed";class un{constructor(e){this.deviceToLogout=Te(e,"deviceToLogout",null)}static get(){return new un(We.get(r.GRACEFUL_DATA))}save(){We.set(r.GRACEFUL_DATA,this)}}class pn{onWindowVisibilityChange(e){pn.baseLogTag,Ie.set("isWindowActive",!0),document.addEventListener("focus",(()=>{t(!0)}),!1),document.addEventListener("blur",(()=>{t(!1)}),!1),window.addEventListener("focus",(()=>{t(!0)}),!1),window.addEventListener("blur",(()=>{"IFRAME"!==document.activeElement.tagName&&t(!1)}),!1);const t=e=>"boolean"==typeof e?n(e?"visible":"hidden"):document.hidden?n("hidden"):n("visible"),n=t=>{Ie.set("isWindowActive","visible"===t),e(t)};window.addEventListener("visibilitychange",t,!1)}static beforeUnload(){pn.isBatchingEnabled&&(Kt.windowClosed=!0,zt.sendBeacon()),window.Moengage.onsite&&window.Moengage.onsite.sendDelayCampaignStats&&window.Moengage.onsite.sendDelayCampaignStats()}static removeBeforeUnloadListeners(){window.removeEventListener("beforeunload",pn.beforeUnload,!1)}static addBeforeUnloadListeners(e){e.configs.isBatchingEnabled&&(pn.isBatchingEnabled=!0),window.addEventListener("beforeunload",pn.beforeUnload,!1)}}pn.baseLogTag="WindowEventManager",pn.isBatchingEnabled=!1;var hn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const mn="MoEngage.user";class fn{static addAttribute(e,t){const n=mn+".addUserAttribute";return new Promise(((i,a)=>{let r=!1;if("string"!=typeof e||null==e)ut.error(1,n,"Attribute name needs to be a string"),i({error:5e3,message:"Attribute name needs to be a string. Type provided was "+typeof e});else if(""===e)ut.error(1,n,"Attribute name can not be an empty string"),i({error:5001,message:"Attribute name can not be an empty string"});else if(null==t)ut.error(1,n,"Attribute value null"),i({error:5003,message:"Attribute value was empty"});else if("string"==typeof t&&""===t)ut.error(1,n,"Attribute value needs to be non-empty string or non-empty object"),i({error:5004,message:"Attribute value needs to be non-empty string or non-empty object"});else if(tt(t)&&M.includes(e))ut.error(1,n,`Value of '${e}' attribute cannot be an object`),i({error:5002,message:"Attribute value cannot be an object"});else if("object"==typeof t&&Array.isArray(t)&&!t.length)ut.error(1,n,"Attribute value needs to be non-empty string or non-empty object"),i({error:5006,message:"Attribute value needs to be non-empty string or non-empty object"});else if(tt(t)&&!Object.keys(t).length)ut.error(1,n,"Attribute value cannot be empty object"),i({error:5005,message:"Attribute value cannot be empty object"});else{const a=new yt(e,t),o=()=>{It.get().then((e=>{e.addAttribute(a).then((e=>{e?("id"===a.key&&ut.log(1,n,"Logging in the user with id: ",a.value),Jt.createUserAttributeEvent(a).then((e=>{ut.log(2,n,"Event to be converted to report:",e),Xt.addEvent(e),nn.collectGetParams().then((t=>{t=new Dt(Dt.REPORT_ADD_TYPE.USER_ATTRIBUTE,t,e),nn.reportAdd(t).then((()=>{r&&$i.onsite.refresh&&$i.onsite.refresh(),i(!0)}))}))}))):(ut.error(1,n,"Attribute already present/queued. Not adding again."),i({error:5005,message:"Attribute already present/queued. Not adding again."}))}))}))};"id"===e?(r=!0,It.get().then((e=>{var a=e.indexOfAttribute("id");-1{o()})))):(function(){const e=mn+".refreshCards";nn.getWebSDKSettings().then((t=>{null!=t&&t.configs.isCardsModuleEnabled&&$i.cards&&(ut.log(1,e,"Fetching new Cards after login"),$i.cards.refreshCards())})).catch((t=>{ut.error(2,e,"Error Refreshing Cards:",t)}))}(),rt(!0),o())}))):o()}}))}static login(e){return fn.addAttribute("id",e)}static logout(e,t){const n=mn+".logout",i=e?{type:"forced",new_uid:t}:null;return function(){const e=un.get();null!=It.getSync()&&(e.deviceToLogout=It.getSync().deviceUuid,e.save())}(),new Promise((e=>{Qt.track(S,i).then((()=>hn(this,void 0,void 0,(function*(){ut.log(1,n,"Logging out now!"),yield zt.flushReports(),pn.removeBeforeUnloadListeners(),nn.getWebSDKSettings().then((t=>hn(this,void 0,void 0,(function*(){var n;t.isDomainLevelStorage&&Ue.remove(r.USER_DATA),Xt.clear(),yield Zi(),yield function(){return Vi(this,void 0,void 0,(function*(){const e="Moengage.disableCards",t=Be.get();try{nn.getWebSDKSettings().then((e=>Vi(this,void 0,void 0,(function*(){var n;if(null!=e&&e.configs.isCardsModuleEnabled&&null!==(n=t.cards)&&void 0!==n&&n.enable){const e=yield Sn.loadModule(ne.CARDS);yield e.logout(),zi=new mt}})))).catch((t=>{ut.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}catch(t){ut.error(1,e,"Error logging out from cards module:",t)}}))}(),rt(),We.logout(),yield It.logout(),We.remove(r.GRACEFUL_DATA),nn.onDeviceAdd=new mt,yield sa(),t.configs.remoteLogTracking&&(n=Be.get(),yield nn.getAndPersistWebSettings(n)),e(!0)})))).catch((t=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),e(!1)}))}))))}))}static updateUniqueId(e){const t=mn+".updateUniqueId";return new Promise((n=>{It.get().then((i=>{var a=i.indexOfAttribute(A),r=i.indexOfAttribute("oldUniqueIds");if(!(-1{fn.login(e).then((()=>{n(!0)}))}))):(ut.warn(1,t,"New id and old id are the same. Not updating the id."),n(!0))}))}))}static getAttributes(){const e=It.getSync().attributes,t={};return e.map((e=>{t[e.key]=e.value})),t}}class vn{constructor(e,t){this.notificationManager=null,this.softAskManager=null,vn.baseLogTag,this.sdkSettings=e,this.browser=t,this.softAskManager=new gn(this.sdkSettings),this.notificationManager=new dn(this.sdkSettings,t)}callWebPush(){const e=vn.baseLogTag+".callWebPush";this.isWebPushEnabled()&&this.notificationManager.getCurrentPermissionState().then((t=>{return n=this,a=function*(){var n=(n=t)=>{It.get().then((t=>{let i=!1;var a=t.getAttribute("email"),o=t.getAttribute("mobile");null===a&&null===o||(i=!0),t.deviceAdded=i,t.save().then((()=>{this.notificationManager.removeToken().then((()=>{Qt.track(E,{[me]:!1}),Qt.track(b),n===Zt.DENIED?ut.log(1,e,"Not asking for permission as current state is denied."):(We.remove(r.OPT_IN_SHOWN_TIME),this.startPushSubscription())}))}))}))};const i=yield Et.getInstance();var a=We.get(r.PUSH_TOKEN),o=t===Zt.DENIED&&!this.sdkSettings.isDomainLevelStorage;null==a&&t!==Zt.DENIED?this.startPushSubscription():null!=a&&(o||i.isSafari()&&t===Zt.PROMPT)?(ut.log(1,e,"User has removed the permission"),ut.image(1,V),i.isSafari()&&t===Zt.PROMPT&&(We.set(he,!0),t=Zt.DENIED),n(t)):o?ut.warn(1,e,"Not proceeding with push subscription as current state is denied"):null!=a&&t===Zt.GRANTED?this.browser.name===Et.BROWSER_NAMES.CHROME?Ve(this.sdkSettings.platformSettings,this.browser)?this.startPushSubscription():ut.warn(1,e,"Subscription mode is not VAPID type. Cannot subscribe to web push."):(this.startPushSubscription(),this.notificationManager.getPushTokenDetails().then((t=>{ut.customLabel(1,e,"token",t.token)}))):this.sdkSettings.isDomainLevelStorage?"granted"===Ue.get(r.HARD_ASK_STATUS)?(a=null===(a=Ue.get(r.SUBSCRIPTION_DETAILS))||void 0===a?void 0:a.domain)&&a===window.location.origin?(ut.log(1,e,"It seems that the user has unsubscribed manually. Starting push subscription.."),n(t)):ut.log(1,e,"Not showing opt-in as user subscribed to sub-domain"):this.startPushSubscription():n()},new(i=(i=void 0)||Promise)((function(e,t){function r(e){try{s(a.next(e))}catch(e){t(e)}}function o(e){try{s(a.throw(e))}catch(e){t(e)}}function s(t){var n;t.done?e(t.value):((n=t.value)instanceof i?n:new i((function(e){e(n)}))).then(r,o)}s((a=a.apply(n,[])).next())}));var n,i,a})).catch((t=>{ut.error(1,e,"Error in getting current state:",t)}))}startPushSubscription(){const e=vn.baseLogTag+".startPushSubscription",t=()=>{We.set(r.HARD_ASK_STATUS,Zt.PROMPT);const t=We.get(r.PUSH_TOKEN);this.notificationManager.showHardAsk().then((n=>{We.set(r.HARD_ASK_STATUS,n.state),n.state===Zt.GRANTED?null!=n.subscriptionDetails.token?(We.set(r.PUSH_TOKEN,n.subscriptionDetails.token),n.subscriptionDetails.domain=window.location.origin,We.set(r.SUBSCRIPTION_DETAILS,n.subscriptionDetails),n.subscriptionDetails.token&&t!==n.subscriptionDetails.token&&nn.deviceAdd().then((()=>{ut.image(1,"https://media.giphy.com/media/90F8aUepslB84/giphy.gif"),It.getSync().subscribedToOldSdk?ut.remoteLogTracking(1,"info",e,"User subscribed from older sdk, hence not sending subscription event"):(null!=t?fn.addAttribute("Web Migrated User","true"):fn.addAttribute("Web Subscription URL",location.href),Qt.track(y,{MOE_WEB_PUSH_TOKEN:n.subscriptionDetails.token,migrated_user:!!window.location.search.includes("moe_migration=true")||void 0}))})),this.sdkSettings.isDomainLevelStorage&&(Ue.set(r.SUBSCRIPTION_DETAILS,{domain:n.subscriptionDetails.domain,token:n.subscriptionDetails.token,endpoint:n.subscriptionDetails.endpoint,keys:n.subscriptionDetails.keys}),Ue.set(r.PUSH_TOKEN,n.subscriptionDetails.token))):(ut.error(1,e,"Push token was received as null."),ut.error(1,e,"Please contact MoEngage support if this troubleshooting does not solve the issue.")):n.state===Zt.DENIED&&ut.image(1,V)})).catch((t=>{ut.warn(1,e,t)}))},n=()=>{this.softAskManager?this.softAskManager.showSoftAsk().then((e=>{e.showHardAsk&&t()})):ut.log(1,e,"SoftAskManager not set.")};this.notificationManager.getCurrentPermissionState().then((i=>{if(i===Zt.GRANTED)this.sdkSettings.optInConfig.type!==Nt.TYPE.ONE_CLICK&&ut.remoteLogTracking(1,"info",e,"Skipping soft ask as browser permission is set to allow all notifications"),t();else{var a=parseInt(We.get(r.OPT_IN_SHOWN_TIME));if(We.get(r.SOFT_ASK_STATUS),We.get(r.HARD_ASK_STATUS),i=(Date.now()-a)/36e5,!a||i>this.sdkSettings.optInConfig.reappearTime)if(this.browser.name===Et.BROWSER_NAMES.SAFARI&&this.sdkSettings.optInConfig.type===Nt.TYPE.ONE_CLICK){ut.log(1,e,"1 step optin configured. In Safari 16+ and macOS 13+, the web push optin will be shown after a user click. Any delay will be ignored.");const t=()=>{window.removeEventListener("click",t),n()};window.addEventListener("click",t)}else n();else{let t,n;n=i<1?(t=Math.floor(60*i),"minute(s)"):(t=Math.floor(100*i)/100,"hour(s)"),ut.remoteLogTracking(1,"info",e,"Not showing opt in as last it was shown",t,n,"back on",new Date(a),". Reappear time is set to",this.sdkSettings.optInConfig.reappearTime,"hours."),ut.log(1,e,"You can clear localstorage to get opt-in again.")}}}))}isWebPushEnabled(){return!this.browser.isIncognito&&0<=vn.SUPPORTED_BROWSERS.indexOf(this.browser.name)&&navigator.serviceWorker&&"PushManager"in window&&"Notification"in window}getPermissionState(){return this.notificationManager.getCurrentPermissionState()}showNotification(e){this.notificationManager&&this.notificationManager.showNotification(e)}trackPushOptedDeviceAttribute(){return new Promise((e=>{var t=We.get(r.OPTED_STATUS_TRACK_TIME);t&&864e5{Sn.addScript(e.src,(()=>{var n=new(0,window[ne[e.name].windowLocation])(n=Be.get());t(n)}))}))),Sn.loadPromises[e.name]}static addScript(e,t){const n=document.createElement("script");n.setAttribute("src",e),n.onload=t,n.async=!0,document.body.appendChild(n)}}Sn.baseLogTag="ModuleManager",Sn.loadPromises={};var En=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class yn{static initialize(){return En(this,void 0,void 0,(function*(){var e;return null==yn.ready&&(yn.serviceMetaStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.SERVICE_META.NAME}),yn.campaingsMetaStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_META.NAME}),yn.pendingSecondaryEvents=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.PENDING_SECONDARY_EVENTS.NAME}),yn.pendingTimerCampaigns=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.PENDING_TIMER_CAMPAIGNS.NAME}),yn.triggeringPrimaryEvents=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.TRIGGERING_PRIMARY_EVENTS.NAME}),yn.campaingsTagsStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_TAGS.NAME}),yn.campaingsStatsStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_STATS.NAME}),yn.testCampaignStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_STATS.NAME}),yn.exitIntentCampaignStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.EXIT_INTENT_CAMPAIGN_STORE.NAME}),e=[yn.serviceMetaStore.ready(),yn.campaingsMetaStore.ready(),yn.pendingSecondaryEvents.ready(),yn.pendingTimerCampaigns.ready(),yn.triggeringPrimaryEvents.ready(),yn.campaingsTagsStore.ready(),yn.campaingsStatsStore.ready(),yn.testCampaignStore.ready(),yn.exitIntentCampaignStore.ready()],yn.ready=Promise.all(e)),yn.ready}))}static clear(){return En(this,void 0,void 0,(function*(){var e=yn.baseLogTag+".clear";try{yield yn.initialize(),yield Promise.all([yn.serviceMetaStore.clear(),yn.campaingsMetaStore.clear(),yn.campaingsTagsStore.clear(),yn.campaingsStatsStore.clear(),yn.testCampaignStore.clear(),yn.exitIntentCampaignStore.clear(),yn.pendingSecondaryEvents.clear(),yn.pendingTimerCampaigns.clear(),yn.triggeringPrimaryEvents.clear()]);var t=[yn.serviceMetaStore.ready(),yn.campaingsMetaStore.ready(),yn.campaingsTagsStore.ready(),yn.campaingsStatsStore.ready(),yn.testCampaignStore.ready(),yn.exitIntentCampaignStore.ready(),yn.pendingSecondaryEvents.clear(),yn.pendingTimerCampaigns.clear(),yn.triggeringPrimaryEvents.clear()];yn.ready=Promise.all(t)}catch(t){ut.error(1,e,"Error clearing onsite stores:",t)}return yn.ready}))}}yn.baseLogTag="MOE_ONSITE_STORES";var bn,_n,Tn,In,An,wn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Dn=(e,t,n)=>null==e.campaignId?()=>{}:()=>(yn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{clicks:Te(t,"clicks",0)+1}):{clicks:1},yn.campaingsStatsStore.setItem(e.campaignId,t)})),null==n&&(n={}),Rn().track_event(te.EVENT_NAMES[t].CLICK,Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},n),e.campaignContext))),On=(e,t,n=!1)=>null==e.campaignId?()=>{}:()=>{if(yn.initialize().then((()=>{yn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{impressions:Te(t,"impressions",0)+1,lastImpression:new Date}):{impressions:1,lastImpression:new Date},yn.campaingsStatsStore.setItem(e.campaignId,t)}))})),!n)return Rn().track_event(te.EVENT_NAMES[t].IMPRESSION,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE,templateType:e.templateType},e.campaignContext))},Cn=(e,t,n)=>{n=n?te.EVENT_NAMES[t].AUTO_DISMIS:te.EVENT_NAMES[t].DISMISS,Rn().track_event(n,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},e.campaignContext))},Pn=(e,t)=>{Rn().track_event(te.EVENT_NAMES[t].DELIVERED,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},e.campaignContext))},Rn=()=>{var e=window.moengage_object||"Moengage";return window[e]};class Nn{static isValid(e,t){return!Nn.isCampaignExpired(e)&&Nn.isCampaignActive(e)&&Nn.isUserInCampaignSegment(e)&&Nn.isCampaignWithinFC(e,t)}static isCampaignExpired(e){return(new Date).getTime()>new Date(e.expiryTime).getTime()}static isValidMessagingCampaign(e,t,n,i,a){return Nn.canCampaignBeRenderedOverExisting(e,a.length)&&Nn.hasCampaignClearedSelfDelay(e,t)&&Nn.hasCampaignClearedGlobalDelay(e,n,i)}static isCampaignActive(e){var t=Nn.baseLogTag+".isValid";return e.status===Tn.ACTIVE||(ut.warn(1,t,`Campaign ${e.campaignId} : Status is `+e.status),!1)}static isUserInCampaignSegment(e){var t=Nn.baseLogTag+".isValid";return!!e.userInSegment||(ut.warn(1,t,`Campaign ${e.campaignId} : User is not in segment`),!1)}static isCampaignWithinFC(e,t){var n=Nn.baseLogTag+".isValid";if([An.SELF_HANDLED].indexOf(e.templateType)<0){var i=Te(e,"delivery.fc_meta.count",0);if(0e.delivery.priority||!(t.delivery.prioritye.updatedTime?1:-1}}Nn.baseLogTag="CampaignUtils";const Ln=e=>wn(void 0,void 0,void 0,(function*(){var t=e.map((e=>yn.campaingsStatsStore.getItem(e.campaignId)));let n;try{n=yield Promise.all(t);const i=e.filter(((e,t)=>Nn.isValid(e,n[t])));return i.sort(Nn.comparator)}catch(t){return ut.error(1,"filterAndSortCampaigns","Error filtering and sorting campaigns: ",t),[]}}));class Mn{}Mn.REMOVE_TRAIL_CHARS=/[^\w\s]+$/gi;const kn=(e,t)=>{const n=Te(e,"triggerData.primary_condition.included_filters",null);return(null==n?void 0:n.filter_operator)===In.OR&&-1<(null==n?void 0:n.filters.findIndex((e=>e.action_name===t)))},xn=e=>wn(void 0,void 0,void 0,(function*(){var t=yield yn.exitIntentCampaignStore.getItem(e.campaignId);if(t)return t.error?t:(e.onsitePayload=t,ut.log(1,"getPrefetchedCampaign","Prefetched exit intent campaign found: "+e.campaignId),e)})),Bn=e=>wn(void 0,void 0,void 0,(function*(){try{return yield yn.campaingsMetaStore.getItem(e)}catch(e){return ut.error(2,"getCampaignById","Error getting campaign from store: ",e),null}})),Un=()=>new Promise((e=>{setTimeout((()=>wn(void 0,void 0,void 0,(function*(){const t=[];yield yn.campaingsMetaStore.iterate((e=>{t.push(e)})),e(t)}))),0)})),Fn=e=>null===(e=Te(e,"triggerData.secondary_condition.included_filters.filters"))||void 0===e?void 0:e.length,Wn=e=>"moe-onsite-campaign-"+e;class Hn{constructor(e,t,n,i){this.dataType=e,this.availableOperations=t,this.event=n,this.filter=i}validate(){return!(this.availableOperations.indexOf(this.filter.operator)<0)}checkEq(){let e=!1;return this.event.attributes.forEach((t=>{let n=t.value,i=this.filter.value;this.dataType===bn.STRING&&typeof n===bn.STRING&&(n=this.removeSpecialChars(n),i=this.removeSpecialChars(i)),t.key===this.filter.name&&(this.dataType!==bn.STRING||this.filter.case_sensitive?n===i&&(e=!0):n.toLowerCase()===i.toLowerCase()&&(e=!0))})),e}checkExists(){let e=!1;return this.event.attributes.forEach((t=>{t.key===this.filter.name&&(e=!0)})),e}removeSpecialChars(e){return e.replace(Mn.REMOVE_TRAIL_CHARS,"")}}(Ji=bn=bn||{}).BOOL="bool",Ji.STRING="string",Ji.DATE="datetime",Ji.NUMBER="double",Ji.LONG="long",Ji.ARRAY_BOOL="array_bool",Ji.ARRAY_NUMBER="array_double",Ji.ARRAY_STRING="array_string",Ji.ARRAY_DATETIME="array_datetime",Ji.OBJECT="object",(Ji=_n=_n||{}).ALLOF="all_of",Ji.ANYOFF="any_of";const Kn=["is","exists","contains","startsWith","endsWith","in","containsInTheFollowing","startsWithInTheFollowing","endsWithInTheFollowing"];class Gn extends Hn{constructor(e,t){super(bn.STRING,Kn,e,t)}evaluate(){Gn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0this.filter.case_sensitive?0<=e.value.indexOf(t):0<=e.value.toLowerCase().indexOf(t.toLowerCase());return Array.isArray(this.filter.value)?this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkStartsWith(e){var t=t=>{var n=(e,t)=>e.substr(0,t.length)===t;return this.filter.case_sensitive?n(e.value,t):n(e.value.toLowerCase(),t.toLowerCase())};return Array.isArray(this.filter.value)?this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkEndsWith(e){var t=t=>{var n=(e,t,n)=>((void 0===n||n>e.length)&&(n=e.length),e.substring(n-t.length,n)===t);if(this.filter.case_sensitive)return n(e.value,t);const i=this.removeSpecialChars(e.value),a=this.removeSpecialChars(t);return n(i.toLowerCase(),a.toLowerCase())};return Array.isArray(this.filter.value)?this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkIn(e){let t=!1;if(Array.isArray(this.filter.value))for(let n=this.filter.value.length-1;0<=n;n--)if(this.filter.case_sensitive){if(this.filter.value[n]===e.value){t=!0;break}}else if(this.filter.value[n].toLowerCase()===e.value.toLowerCase()){t=!0;break}return t}checkInTheFollowing(e){return this.filter.value.map((t=>e(t)))}}Gn.baseLogTag="StringDataType";const Vn=["is","exists"];class jn extends Hn{constructor(e,t){super(bn.BOOL,Vn,e,t)}evaluate(){let e=!1;switch(this.filter.operator){case"is":e=this.checkEq();break;case"exists":e=this.checkExists()}return this.filter.negate?!e:e}}jn.baseLogTag="BooleanDataType";const Yn=["is","exists","greaterThan","lessThan","between","in"];class zn extends Hn{constructor(e,t){super(bn.NUMBER,Yn,e,t)}evaluate(){zn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0this.filter.value}checkLessThan(e){return e.valuee.key===this.filter.name));const n=0t:e.value.setHours(0,0,0,0)t:e.value.setHours(0,0,0,0)>t.setHours(0,0,0,0)}checkLastX(e){var t=(new Date).setHours(0,0,0,0);return 0e.key===this.filter.name));return null!=(t=0Array.isArray(e))(t.value)&&(e=this.filter.array_filter_type&&this.filter.array_filter_type===_n.ANYOFF?this.checkAnyOf(t):this.checkAllOf(t)),e}checkAllOf(e){return e.value.every((t=>this.getFilterResult(t,e)))}checkAnyOf(e){return e.value.some((t=>this.getFilterResult(t,e)))}getFilterResult(e,t){let n=!1;e=this.createCustomEvent(t.key,e);const i=this.getDataType(e);return i.validate()&&(n=i.evaluate()),n}createCustomEvent(e,t){return t=new yt(e,t),new Jt(this.event.name,[t])}getDataType(e){let t;switch(this.filter.data_type){case bn.ARRAY_BOOL:t=new jn(e,this.filter);break;case bn.ARRAY_DATETIME:t=new $n(e,this.filter);break;case bn.ARRAY_NUMBER:t=new zn(e,this.filter);break;case bn.ARRAY_STRING:t=new Gn(e,this.filter)}return t}}class Qn{constructor(e,t){this.event=e,this.filter=t}evaluate(){let e;var t=this.event.attributes.filter((e=>e.key===this.filter.name));const n=0{if("exists"===e.operator){var t=(null==e?void 0:e.name)in(null==n?void 0:n.value);return e.negate?!t:t}return(null==e?void 0:e.name)in(null==n?void 0:n.value)&&(t=new yt(e.name,n.value[e.name]),t=new Jt(e.name,[t]),Zn.doesEventMatchFilters(t,e))})),a=this.filter.filter_operator;e=(null==i?void 0:i[0])||!1;for(let t=1;tt.action_name===e||t.action_name===_&&"MOE_EXIT"===e))}static areFiltersAbsent(e){return!(null==e||!e.action_name||null!==(e=null==e?void 0:e.attributes)&&void 0!==e&&e.filters)}static getFilters(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filters)||null}static getFilterOperator(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filterOperator)||In.AND}static isTriggered(e,t,n,i){let a=!0;if(0<(null==t?void 0:t.length)){let o;o=i||ei.getFilterOperator(n);var r=t.map((t=>Zn.doesEventMatchFilters(e,t)));a=r[0]||!1;for(let e=1;ee.action_name===I));return e=ei.getFilters(i),ei.isTriggered(t,e,i)}return!0}}ei.baseLogTag="OnsiteCampaignMeta";class ti{constructor(e){this.cs_id=e.cs_id,this._id=e._id,this.references=e.references,this.trigger_wait_time=e.trigger_wait_time||null,ii.validate(e.primary_condition)?this.primary_condition=new ii(e.primary_condition):this.primary_condition=null,ii.validate(e.secondary_condition)?this.secondary_condition=new ii(e.secondary_condition):this.secondary_condition=null,ii.validate(e.url_condition)?this.url_condition=new ii(e.url_condition):this.url_condition=null,this.description=e.description,null!=e.trigger_delay?this.trigger_delay=new ni(e.trigger_delay):this.trigger_delay=null}static validate(e){let t=!1;return["primary_condition"].forEach((n=>{null!=Te(e,n,null)&&(t=!0)})),t}}class ni{constructor(e){if(this.delay=Te(e,"delay",0),this.unit=Te(e,"unit","seconds"),this.delay_type=Te(e,"delay_type",""),this.attribute=Te(e,"attribute",""),Te(e,"delay",null)&&Te(e,"unit",null)){let e=this.delay;"minutes"!==this.unit&&"hours"!==this.unit&&"days"!==this.unit||(e*=60),"hours"!==this.unit&&"days"!==this.unit||(e*=60),"days"===this.unit&&(e*=24),this.delayInSeconds=e}else this.delayInSeconds=0}}class ii{constructor(e){this.included_filters=new ai(Te(e,"included_filters",null)),this.excluded_filters=new ai(Te(e,"excluded_filters",null))}static validate(e){return!!(e&&(e=e.included_filters)&&Array.isArray(e.filters)&&e.filters.length&&null!=e.filter_operator)}}class ai{constructor(e){this.filter_operator=Te(e,"filter_operator",In.AND),this.filters=null===(e=Te(e,"filters",[]))||void 0===e?void 0:e.map((e=>new ri(e)))}}class ri{constructor(e){const t=Te(e,"action_name",null);"string"==typeof t&&(t.includes(".")?this.action_name=ze(t):this.action_name=t);var n=Te(e,"executed",null);"boolean"==typeof n&&(this.executed=n),this.filter_type=Te(e,"filter_type",null),n=Te(e,"attributes",null),oi.validateJson(n)&&(this.attributes=new oi(n)),"nested_filters"===this.filter_type&&(this.filters=new ai(e))}}class oi{constructor(e){this.filters=[],this.filterOperator=Te(e,"filter_operator",In.AND),this.filters=Te(e,"filters",[]),this.filters.length&&this.filters.forEach((e=>{var t;null!==(t=null==e?void 0:e.name)&&void 0!==t&&t.includes(".")&&(e.name=ze(e.name))}))}static validateJson(e){if(null==e)return!1;var t=["filters"];for(let n=0;n{var a={id:(0,ft.v4)(),channel:this.channel,topic:e,message:t};this.addToListener(a,n,i),this.target instanceof HTMLIFrameElement?this.target.contentWindow.postMessage(a,this.target.src):this.target.postMessage(a,"*")}))}static listenToChannel(e,t,n){window.addEventListener("message",(i=>{i.data&&i.data.channel&&i.data.topic&&i.data.channel===e&&i.data.topic===t&&n(i.data,(n=>{n={id:i.data.id,channel:e,topic:t,message:n},i.source.postMessage(n,i.origin)}))}))}addToListener(e,t,n){gi.pendingPromises[e.id]={resolve:t,reject:n},window.addEventListener("message",(e=>{e.data&&Te(e.data,"channel",null)===this.channel&&null!=gi.pendingPromises[e.data.id]&&(gi.pendingPromises[e.data.id].resolve(e.data),delete gi.pendingPromises[e.data.id])}))}}gi.pendingPromises={};class ui{constructor(e){this.draftId=Te(e,"draft_id",null),this.draftType=Te(e,"draft_type",null),this.templateType=Te(e,"template_type",null),this.action=Te(e,"action",null);var t=Te(e,"campaign_meta",{});this.locale=Te(e,"locale",null),this.variation=Te(e,"variation",null),this.displaySettings=new di({config:t.config},this.templateType)}static isValidRawJson(e){var{draft_id:t,draft_tag:n,draft_type:e}=e;return e===te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON?null!=t&&null!=n:null!=t}}class pi{getIframe(){return null==this.iFramePromise&&(this.iFramePromise=new Promise((e=>{const t=document.createElement("iframe");t.id="moengage-web-helper-frame",t.style.display="none",t.src=te.WEB_HELPER_IFRAME_URL,document.body.appendChild(t),t.addEventListener("load",(()=>{this.helper=new gi(te.IFRAME_CHANNEL,t),e(t)}))}))),this.iFramePromise}getDraftCampaignInfo(){return e=this,n=function*(){var e="IframeHelper.getDraftCampaignInfo";try{ut.log(1,e,"Loading helper frame"),yield this.getIframe(),ut.log(1,e,"Helper frame loaded");var t=yield this.helper.sendMessage(te.IFRAME_TOPICS.COOKIE_STORAGE,{TYPE:"GET",KEY:te.COOKIE_STORAGE.TEST_DRAFT_ID});ut.log(1,e,"Data from iframe: ",t);var n=t.message;ut.log(1,e,"Raw test campaign",n);let i=null;return null!=n&&(ui.isValidRawJson(n)?i=new ui(n):ut.error(1,e,"Data is not a valid test campaign")),i}catch(e){return null}},new(t=(t=void 0)||Promise)((function(i,a){function r(e){try{s(n.next(e))}catch(e){a(e)}}function o(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var n;e.done?i(e.value):((n=e.value)instanceof t?n:new t((function(e){e(n)}))).then(r,o)}s((n=n.apply(e,[])).next())}));var e,t,n}}class hi{constructor(e){this.templateType=Te(e,"template_type",null),this.payloadType=Te(e,"payload_type",null),this.payload=Te(e,"payload",null),this.position=Te(e,"position",null),this.campaignContext=Te(e,"campaign_context",null),this.editorVersion=Te(e,"editor_version",null),this.htmlJsonPayload=JSON.parse(Te(e,"html_json_payload",null)),this.updatedTime=Xe(Te(e,"updated_time")+"Z")}}var mi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class fi{constructor(e){this.appId=e.appId,this.store=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.SERVICE_META.NAME}),this.host=e.baseDomainName}getUserSessionAttributes(){var e=function(){const e=new Date;return{day:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],hours:String(e.getHours()).padStart(2,"0")}}();const t=new vt;var n=at(window.location.search);return Object.assign(Object.assign({},n),{USER_TYPE:1{ei.isValidMetaJSON(e)&&a.push(new ei(e))})),{campaignsMeta:a,globalDelayBetweenInapps:Te(i,"min_delay_btw_inapps",0)}}catch(t){throw ut.error(1,e,"Error getting meta for inapp: ",t),new Error("Could not get meta payload")}}))}getCampaignPayload(e,t){return mi(this,void 0,void 0,(function*(){var n=fi.baseLogTag+".getCampaignPayload";let i;try{const n={contexts:["string"],campaign_context:e.campaignContext,user_session_attributes:this.getUserSessionAttributes()};if(t){const a={};for(let e=0;e{n.push(new hi(e))})),n}catch(i){throw ut.error(1,n,"Error geting payload",i),new Error("Could not get payload for "+e)}}))}getDraftCampaign(e){return mi(this,void 0,void 0,(function*(){var t=fi.baseLogTag+".getDraftCampaign";try{const t=yield this.getRequestOptions();t.queryParams=Object.assign({},t.queryParams,{locale:e.locale,variation:e.variation});var n=yield ht.post(this.host+te.API.DRAFT_CAMPAIGN_PAYLOAD+e.draftId,t);const i=JSON.parse(n.responseText);return"JSON"===i.payload_type&&(i.payload=JSON.parse(i.payload)),new hi(i)}catch(n){return ut.error(1,t,"Error geting test campaign payload",n),null}}))}getRequestOptions(e={}){const t=Qe();return nn.getWebSDKSettings().then((n=>{var i=We.get(r.USER_DATA);let a;const{deviceUuid:o,attributes:s}=i;if(s.map((e=>{e.key===A&&(a=null===(e=null==e?void 0:e.value)||void 0===e?void 0:e.toString())})),!o)throw new Error("device_unique_id not found in localStorage.");var l=qe()?"mweb":"web";return i=Je(),{headers:{"Content-Type":"application/json","MOE-APPKEY":this.appId},queryParams:Object.assign({sdk_ver:t.getSdkVersion(),unique_id:o,os:l},i),postData:Object.assign(Object.assign({},e),{uid:a})}})).catch((e=>{throw new Error("Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}sendDeliveryFunnelStats(e,t){return mi(this,void 0,void 0,(function*(){const n=fi.baseLogTag+".sendDeliveryFunnelStats";try{var i=yield this.getRequestOptions(null);return ht.post(this.host+te.API.STATS,Object.assign(Object.assign({},i),{headers:Object.assign(Object.assign({},i.headers),{"MOE-INAPP-BATCH-ID":t}),postData:Object.assign(Object.assign({},i.postData),{deliveryStats:e})})).then((()=>{ut.log(1,n,"Delivery Funnel stats sent to Moengage: ",e)})).catch((e=>{ut.warn(1,n,"Error sending campaign stats: ",e)}))}catch(i){ut.warn(1,n,"Error sending campaign stats: ",i)}}))}sendBeacon(e,t){this.getRequestOptions().then((t=>{var n=this.host+te.API.STATS;t.queryParams.app_id=t.headers["MOE-APPKEY"],delete t.queryParams.uid,n=ot(n,t.queryParams),ut.log(1,"OnsiteApi.sendBeacon","[sendBeacon] payload: "+JSON.stringify(e)),t=new Blob([JSON.stringify(e)],{type:"text/plain;charset=UTF-8"}),navigator.sendBeacon(n,t)}))}}fi.baseLogTag="OnsiteApi";class vi{constructor(){this.isExitIntentShown=!1,this.isPopStateEventBound=!1}onScroll(e){const t=vi.baseLogTag+".onScroll";null==e&&(e=()=>{});var n=vi.throttle((()=>{ut.remoteLogTracking(1,"info",t,"Scrolled percent:",vi.getScrollPercent()),e(vi.getScrollPercent())}),te.SCROLL_CAMPAIGN_THROTTLING_TIME);return e(vi.getScrollPercent()),window.addEventListener("scroll",n),n}onMobileTabChange(e){const t=vi.baseLogTag+".onMobileTabChange";document.addEventListener("visibilitychange",(()=>{this.isExitIntentShown||"hidden"!==document.visibilityState||(ut.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0)}))}onMobileBackHit(e){const t=vi.baseLogTag+".onMobileBackHit";setTimeout((()=>{this.isPopStateEventBound=!0,window.addEventListener("popstate",(n=>{!this.isExitIntentShown&&n.state&&"exit_intent"===n.state.moeIntent&&(ut.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e("onBackClick"),this.isExitIntentShown=!0)}))}),1e3),this.setHistoryState()}setHistoryState(){window.history.state&&"no_intent"===window.history.state.moeIntent||(window.history.replaceState(Object.assign(Object.assign({},window.history.state),{moeIntent:"exit_intent"}),""),window.history.pushState(Object.assign(Object.assign({},window.history.state),{moeIntent:"no_intent"}),""))}onMobileScrollAndExit(e){const t=vi.baseLogTag+".onMobileScrollAndExit",n=document.documentElement.offsetHeight;let i,a=vi.getScrollY();0{let r=a-vi.getScrollY();r<0&&(r=0,a=vi.getScrollY()),i=vi.getScrollPercent()>te.EXIT_INTENT.CONFIG.SCROLL_DOWN_THRESHOLD,i&&r/n>te.EXIT_INTENT.CONFIG.SCROLL_UP_THRESHOLD/100&&(clearInterval(this.scrollExitIntentInterval),this.scrollExitIntentInterval=null,this.isExitIntentShown||(ut.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0))}),te.EXIT_INTENT.CONFIG.SCROLL_INTERVAL))}mobileExitIntent(e){this.onMobileScrollAndExit(e),this.onMobileBackHit(e),this.onMobileTabChange(e)}onExit(e){const t=vi.baseLogTag+".onExit";qe()?this.mobileExitIntent(e):(this.exitIntentListener=n=>{return i=this,r=function*(){var i=window.innerWidth,a=window.innerHeight;(n.clientY<0||n.clientX<0||n.clientY>=a||n.clientX>=i)&&(ut.log(1,t,"TRIGGERED: EXIT INTENT"),e())},new(a=(a=void 0)||Promise)((function(e,t){function n(e){try{s(r.next(e))}catch(e){t(e)}}function o(e){try{s(r.throw(e))}catch(e){t(e)}}function s(t){var i;t.done?e(t.value):((i=t.value)instanceof a?i:new a((function(e){e(i)}))).then(n,o)}s((r=r.apply(i,[])).next())}));var i,a,r},document.addEventListener("mouseout",this.exitIntentListener,!1))}static getScrollPercent(){const e=window,t=document,n=t.documentElement,i=t.getElementsByTagName("body")[0],a=e.innerHeight||n.clientHeight||i.clientHeight;var r=document.body,o=document.documentElement;return a<(o=Math.max(r.scrollHeight,r.offsetHeight,o.clientHeight,o.scrollHeight,o.offsetHeight))?100*vi.getScrollY()/(o-a):100}static getScrollY(){let e=0;return"number"==typeof window.pageYOffset?e=window.pageYOffset:document.body&&document.body.scrollTop&&(e=document.body.scrollTop),e}static throttle(e,t){let n;return(...i)=>{n=n||window.setTimeout((()=>{n=null,e.apply(null,i)}),t)}}}vi.baseLogTag="WindowEventManager";var Si=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Ei{static getPendingSecondaryEventCampaign(e){return Si(this,void 0,void 0,(function*(){return yield yn.pendingSecondaryEvents.getItem(e)}))}static setPendingSecondaryEventCampaign(e,t){return Si(this,void 0,void 0,(function*(){yield yn.pendingSecondaryEvents.setItem(e,t)}))}static removePendingSecondaryEventCampaign(e){return Si(this,void 0,void 0,(function*(){yield yn.pendingSecondaryEvents.removeItem(e)}))}static getPendingSecondaryEventKeys(){return Si(this,void 0,void 0,(function*(){return yield yn.pendingSecondaryEvents.keys()}))}static getPendingTimerCampaign(e){return Si(this,void 0,void 0,(function*(){return yield yn.pendingTimerCampaigns.getItem(e)}))}static setPendingTimerCampaign(e,t){return Si(this,void 0,void 0,(function*(){yield yn.pendingTimerCampaigns.setItem(e,t)}))}static removePendingTimerCampaign(e){return Si(this,void 0,void 0,(function*(){yield yn.pendingTimerCampaigns.removeItem(e)}))}static getPendingTimerKeys(){return Si(this,void 0,void 0,(function*(){return yield yn.pendingTimerCampaigns.keys()}))}static getTriggeringPrimaryEvent(e){return Si(this,void 0,void 0,(function*(){return yield yn.triggeringPrimaryEvents.getItem(e)}))}static setTriggeringPrimaryEvent(e,t){return Si(this,void 0,void 0,(function*(){yield yn.triggeringPrimaryEvents.setItem(e,t)}))}static removeTriggeringPrimaryEvent(e){return Si(this,void 0,void 0,(function*(){yield yn.triggeringPrimaryEvents.removeItem(e)}))}static getTriggeringPrimaryEventKeys(){return Si(this,void 0,void 0,(function*(){return yield yn.triggeringPrimaryEvents.keys()}))}static removeCampaignFromStores(e){return Si(this,void 0,void 0,(function*(){yield Ei.removePendingSecondaryEventCampaign(e),yield Ei.removePendingTimerCampaign(e)}))}}var yi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class bi{static setListener(e){this.listener=e}static destroy(){this.listener=null,this.deliveryStats=null}static setDeliveryStats(e){this.deliveryStats=e}static createNewTimers(){return yi(this,void 0,void 0,(function*(){var e=this.baseLogTag+".createNewTimers",t=yield Ei.getPendingTimerKeys();for(let a=0;ayi(this,void 0,void 0,(function*(){yield this.checkAndInvokeListener(e),yield Ei.removeCampaignFromStores(e)}))),t);n={startTime:Date.now(),timerId:n,timer:t},yield Ei.setPendingTimerCampaign(e,n)}))}static checkAndInvokeListener(e){return yi(this,void 0,void 0,(function*(){var t=this.baseLogTag+".checkAndInvokeListener",n=yield Bn(e);null!=n&&n.campaignId&&((yield this.isSatisfyingEventsArray(e))?ei.getURLFilterResult(n)&&(ut.log(1,t,`Campaign ${e} satisfies the secondary_condition and the url_condition after timer has elapsed`),this.closeProximityTimerCampaigns.push(n),this.closeProximityCampaignsTimeout||(this.closeProximityCampaignsTimeout=setTimeout((()=>{this.listener(this.closeProximityTimerCampaigns),this.closeProximityTimerCampaigns=[],this.closeProximityCampaignsTimeout=null}),500))):(ut.warn(1,t,`Campaign: ${e} does not satisfy secondary_condition after its timer has elapsed. Removing its entry from secondary stores`),this.deliveryStats.setStats(n,te.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED),this.deliveryStats.setStats(n,te.DELIVERY_FUNNEL.EVALUATION.CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED),this.deliveryStats.sendDeliveryStats([n])))}))}static checkIfPendingAction(e,t){return t===In.AND&&!e.events.some((e=>1===e.filters.length&&!e.filters[0].executed))}static isSatisfyingEventsArray(e){return yi(this,void 0,void 0,(function*(){var t=yield Ei.getPendingSecondaryEventCampaign(e);if(null!=t&&t.events){if(!t.events.length)return!0;var n=t.operator;for(let e=0;e=r.timer&&(yield this.isSatisfyingEventsArray(a))&&null!=(r=yield Bn(a))&&r.campaignId&&(ut.warn(1,e,`Campaign: ${a} contained 'has not executed' event(s) and had satisfied secondary_condition, but the website was closed when the timer elapsed`),i.push(r),yield this.deleteTimerAndRemoveFromStores(a))}this.sendUserNotOnAppStat(i)}))}static sendUserNotOnAppStat(e){for(let n=0;n{if("nested_filters"===e.filter_type){const t={operator:e.filters.filter_operator,filters:[]};e.filters.filters.forEach((e=>{t.filters.push(e),!1===e.executed&&(i=!0)})),n.events.push(t)}else{var t={operator:n.operator===In.AND?In.OR:In.AND,filters:[e]};n.events.push(t),!1===e.executed&&(i=!0)}})),n.updated_time=Date.now(),n.time_left=1e3*e.triggerData.trigger_wait_time.wait_period,{campaignEntry:n,isCampaignTimerSet:i}}static pruneRemovedCampaigns(){return _i(this,void 0,void 0,(function*(){var e=this.baseLogTag+".pruneRemovedCampaigns";const t=(yield Un()).map((e=>e.campaignId));var n=yield Ei.getPendingSecondaryEventKeys();for(let a=0;ae.toBeRemoved)))||(ut.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s))):d===In.AND&&(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(r.toBeRemoved=!0,(c===In.OR||c===In.AND&&h.events.every((e=>e.toBeRemoved)))&&(ut.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s)))):d===In.OR?(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(c===In.AND||c===In.OR&&1===h.events.length?(ut.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s)):r.toBeRemoved=!0)):d===In.AND&&(r.toBeRemoved=!0,1===h.events.length&&h.events[0].toBeRemoved&&c===In.OR&&(ut.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s))))}}a.includes(s)||i.includes(s)||(yield this.updatePendingSecondaryEvents(s,h))}}return this.sendPathTimeExpiredStat(r),yield this.clearCampaignsData(a),yield this.clearCampaignsData(i),i}))}static sendPathTimeExpiredStat(e){for(let n=0;n!e.toBeRemoved));for(let e=0;e!e.toBeRemoved))}yield Ei.setPendingSecondaryEventCampaign(e,t)}))}static clearCampaignsData(e){return _i(this,void 0,void 0,(function*(){for(let t=0;t_i(this,void 0,void 0,(function*(){n.includes(t)||(ut.warn(1,e,`Campaign: ${t} does not exist in pendingSecondaryEvents store but exists in triggeringPrimaryEvents store. Removing it from triggeringPrimaryEvents store`),yield Ei.removeTriggeringPrimaryEvent(t))}))))}))}}Ti.baseLogTag="SecondaryEventsManager",Ti.deliveryStats=null;var Ii=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Ai{constructor(e){this.primaryEventsHash={},this.secondaryEventsHash={},this.messagingCampaigns=[],this.scrollCampaigns=[],this.scrollCampaignTriggered=!1,this.exitIntentCampaigns=[],this.exitCampaignTriggered=!1,this.listener=null,this.historyManager=window[ee],this.onEvent=e=>Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".onEvent";try{null!=this.primaryEventsHash[e.name]&&(yield this.handlePrimaryEvent(e)),null!=this.secondaryEventsHash[e.name]&&(yield this.handleSecondaryEvent(e))}catch(e){ut.error(1,t,"Error occurred during check event trigger campaigns: ",e)}})),this.onScroll=e=>Ii(this,void 0,void 0,(function*(){const t=Ai.baseLogTag+".onScroll";try{if(this.scrollCampaigns&&0Ii(this,void 0,void 0,(function*(){var i,a=null===(i=null===(a=null===(i=null===(a=null===(i=null==n?void 0:n.triggerData)||void 0===i?void 0:i.primary_condition)||void 0===a?void 0:a.included_filters)||void 0===i?void 0:i.filters[0])||void 0===a?void 0:a.attributes)||void 0===i?void 0:i.filters[0];a&&(i=new yt(a.name,a.value),i=yield Jt.createEvent(T,[i]),ei.getFilterResult(i,n)&&e>a.value&&!this.scrollCampaignTriggered&&(this.scrollCampaignTriggered=!0,window.removeEventListener("scroll",this.scrollListenerCallback),ut.log(1,t,"Triggered Scroll campaign"),this.trigger([n],i)))}))))}}catch(n){ut.error(1,t,"Error occurred in triggering scroll campaigns ",n)}})),this.onExit=e=>Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".onExit";try{if(0ei.getFilterResult(i,e)));n.length?(ut.log(1,t,"Triggered Exit Intent campaign: ",n),this.trigger(n,i)):("onBackClick"===e&&window.history.back(),ut.log(1,t,"No Exit Intent campaign is eligible."))}}catch(n){ut.error(1,t,"Error occurred in triggering exit intent campaigns ",n)}})),this.messagingCampaigns=e,this.windowEventManager=new vi}onTrigger(e){this.listener=e}handlePrimaryEvent(e){return Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".handlePrimaryEvent",n=this.primaryEventsHash[e.name];const i=[],a=[];for(let e=0;eei.didPrimaryEventFilterTrigger(e,t)));o.length&&(yield Ti.createPendingSecondaryEvents(o,e)),o=a.filter((t=>ei.getFilterResult(e,t))),o.length&&(ut.log(1,t,`Campaigns triggered for event ${e.name}: `+o.length),this.trigger(o,e))}))}handleSecondaryEvent(e){return Ii(this,void 0,void 0,(function*(){var t=Ai.baseLogTag+".handleSecondaryEvent",n=yield Ti.updatePendingSecondaryEventsHistory(e,this.secondaryEventsHash[e.name]);let i=[];for(let e=0;eei.getURLFilterResult(e))),i.length&&(ut.log(1,t,`Campaigns triggered by secondary event "${e.name}": `+i.length),this.trigger(i))}))}getCampaignsFromHash(e){return Ii(this,void 0,void 0,(function*(){const t=[];var n=this.primaryEventsHash[e];if(null!=n&&n.length)for(let e=0;e{this.addEntryInEventsHash(this.primaryEventsHash,t.action_name,e.campaignId)}))}createSecondaryEventsHash(e){const t=Te(e,"triggerData.secondary_condition.included_filters.filters",[]);null!=t&&t.forEach((t=>{"nested_filters"===t.filter_type?t.filters.filters.forEach((t=>{this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)})):this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)}))}startWatching(){return Ii(this,void 0,void 0,(function*(){Ai.baseLogTag,this.messagingCampaigns.forEach((e=>{this.createPrimaryEventsHash(e),this.createSecondaryEventsHash(e)})),this.historyManager&&(this.historyManager.getHistory().forEach(this.onEvent),this.historyManager.addEventListener(this.onEvent)),this.scrollCampaignTriggered=!1,this.scrollCampaigns=this.messagingCampaigns.filter((e=>kn(e,T))),0kn(e,_))),0this.active,this.campaignMeta=e,this.data=t,this.active=!1,this.campaignRendered=!1;const n=Te(e,"triggerData.trigger_delay.delayInSeconds",0)||0;this.waitForDelay=new Promise((e=>{this.delayTimer=setTimeout((()=>{this.campaignRendered=!0,e()}),1e3*n)}))}setIsActive(e){this.active=e}}const Di={CENTER:{position:"absolute",top:"50%",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, -50%)"},CENTER_LEFT:{position:"absolute",top:"50%",left:"10px",bottom:"auto",right:"auto",transform:"translate(0,-50%)"},CENTER_RIGHT:{position:"absolute",top:"50%",right:"10px",bottom:"auto",left:"auto",transform:"translate(0,-50%)"},TOP_LEFT:{position:"absolute",top:"10px",left:"10px",bottom:"auto",right:"auto"},TOP_CENTER:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},TOP_RIGHT:{position:"absolute",top:"10px",right:"10px",bottom:"auto",left:"auto"},BOTTOM_LEFT:{position:"absolute",bottom:"10px",left:"10px",top:"auto",right:"auto"},BOTTOM_CENTER:{position:"absolute",left:"50%",bottom:"10px",top:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM_RIGHT:{position:"absolute",bottom:"10px",right:"10px",top:"auto",left:"auto"},TOP:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM:{position:"absolute",bottom:"0",top:"auto",right:"auto",left:"50%",transform:"translate(-50%, 0)"},LEFT:{position:"absolute",left:"0",bottom:"auto",right:"auto",top:"auto"},RIGHT:{position:"absolute",right:"0",bottom:"auto",left:"auto",top:"auto"}},Oi=e=>{try{return!Ci()&&window.Moengage.onsite.displayManager.campaignRenderMap[e].campaignMeta}catch(t){ut.error(1,"OsmFunctions.getCampaignMeta","Campaign meta not found: "+e)}},Ci=()=>!!window.Moengage.onsite.displayManager.testCampaign&&(ut.log(1,"OsmFunctions.isTestCampaign","Test campaign element. No data will be sent to BE right now. We'll start tracking events once the campaign is live"),!0);var Pi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};function Ri(e,t,n,i,a){return Pi(this,void 0,void 0,(function*(){const r=Wn(t),o=/moe-campaign-id/g;yield Pi(this,void 0,void 0,(function*(){try{let d=e.root;const{styles:g,scripts:u}=e,p=document.createElement("div");p.id=r,n.parentNode.insertBefore(p,n);const h=document.querySelector("#"+r),m=new DOMParser;d=d.replace(o,t);var s=m.parseFromString(d,"text/html");yield function(e){return Pi(this,void 0,void 0,(function*(){try{const t=e.getElementsByTagName("a");for(let e=t.length-1;0<=e;e--)""===t[e].getAttribute("href")&&t[e].removeAttribute("href")}catch(e){ut.error(2,"InsertCustomHtmlJs.removeEmptyHrefTags","Error while removing Empty href attributes",e)}}))}(s),function(e){try{["trackEvent","trackClick","trackDismiss","dismissMessage","leadGenFormSubmit","fetchRatingValue"].forEach((n=>{!function(e,n){e.querySelectorAll("[onclick]").forEach((e=>{var i=e.getAttribute("onclick").replace(new RegExp(n+"\\((.*?)\\)","g"),((e,i)=>i?n+`('${t}',${i})`:n+`('${t}')`));e.setAttribute("onclick",i)}))}(e,n)}))}catch(e){ut.error(2,"InsertCustomHtmlJs.addCampaignId","Error while adding Campaign Id",e)}}(s);const f=g.map((e=>m.parseFromString(e,"text/html").head.childNodes[0]));var l=u.map((e=>(e=e.replace(o,t),m.parseFromString(e,"text/html").head.childNodes[0]))),c=f.map((e=>new Promise(((t,n)=>{!function(e){const{node:t,onLoad:n,onError:i}=e;t instanceof HTMLMetaElement||"dns-prefetch"===t.getAttribute("rel")?n():(t.onload=()=>n(),t.onerror=()=>i()),document.querySelector("#"+r).appendChild(t)}({node:e,onLoad:t,onError:n})}))));yield Promise.all(c).catch((e=>{ut.warn(1,"InsertCustomHtmlJs","Error loading Styles",(null==e?void 0:e.message)||"")}));const v=s.body.childNodes[0];h.appendChild(v),[...v.querySelectorAll(".brz-embed-code script")].map((e=>{!function(e){const t=document.createElement("script");t.innerHTML=e.innerHTML;for(let a=0;a{const a=document.createElement("script");for(let n=0;n{window.Brz.emit("init.dom",window.jQuery(v)),ut.log(1,"InsertCustomHtmlJs","Custom HTML/JS DOM Level OSM Insertion: "+r),a&&a(i,"OSM")()})).catch((e=>{ut.warn(1,"InsertCustomHtmlJs","Error loading script",(null==e?void 0:e.message)||"")}))}catch(e){ut.error(2,"InsertCustomHtmlJs","Failed to Insert OSM into DOM: "+r)}}))}))}var Ni=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Li{constructor(){this.renderListener=null,this.initializationPromiseObject=null,this.campaignRenderOrder=[],this.campaignRenderMap={},this.dismissTestInapp=e=>{this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"),this.removeOSMPusher(),this.pushCardsTemplate(0),setTimeout((()=>{var t;return null===(t=document.getElementById("moe-onsite-campaign-"+e))||void 0===t?void 0:t.remove()}),0)},this.dismissInapp=e=>{if(0!==this.getActiveCampaigns().length){const t=this.getActiveCampaigns();setTimeout((()=>{t.forEach((t=>{var n;t.campaignMeta.campaignId===e&&(t.iframe?null!==(n=t.iframe)&&void 0!==n&&n.remove():null!==(t=t.osmDivSelector)&&void 0!==t&&t.remove())}))}),0),this.campaignRenderMap[e].setIsActive(!1),this.campaignRenderOrder=this.campaignRenderOrder.filter((t=>t!==e)),clearInterval(this.campaignRenderMap[e].dismissInterval),this.campaignRenderMap[e].delayTimer=null,this.renderAllActiveCampaigns()}else this.dismissTestInapp(e)},this.clickTracker=Dn,this.dismissEvent=Cn,this.startInitialization(),this.initialInlineBodyStyle=document.body.getAttribute("style")}startInitialization(){return Ni(this,void 0,void 0,(function*(){var e=Li.baseLogTag+".startInitialization";try{null==this.initializationPromiseObject&&(this.initializationPromiseObject=new mt),this.initializationPromiseObject.res()}catch(t){ut.error(1,e,"Error initializing display managaer:",t)}}))}getOSMPusher(e){const t=document.createElement("div");if(t.id=te.PUSH_BANNER,t.style.setProperty("display","block","important"),t.style.height=e+"px","FRAMESET"===document.body.nodeName){const e=document.head;e.parentNode.insertBefore(t,e)}else{const e=document.body.firstChild;e.parentNode.insertBefore(t,e)}return t}removeOSMPusher(){var e;null!==(e=document.getElementById(te.PUSH_BANNER))&&void 0!==e&&e.remove()}queueDraftCampaign(e,t){return Ni(this,void 0,void 0,(function*(){var n=Li.baseLogTag+".queueDraftCampaign";try{yield this.initializationPromiseObject.p,e.position=t.position,this.testCampaign=e;var i=!("1"!==t.editorVersion||!t.htmlJsonPayload);const a=!i&&Li.createDefaultIframe(this.testCampaign.draftId,t.payload);let r;ut.warn(1,n,"Going to render test campaign "+e.draftId),r="FRAMESET"===document.body.nodeName?this.getOSMPusher(0):document.body.firstChild,i?(yield Ri(t.htmlJsonPayload,this.testCampaign.draftId,r),this.renderTestCampaign(e,a,t)):(r.parentNode.insertBefore(a,r),a.onload=()=>{a.contentWindow.postMessage({campaignId:e.draftId},"*"),"1"===t.editorVersion?this.handleBridgeInsertion(a.contentDocument,e.draftId):this.handleClassBasedTrackingForTestCampaign(a,t,e),this.renderTestCampaign(e,a)})}catch(e){ut.error(1,n,"Error queueing draft campaign",e)}}))}renderTestCampaign(e,t,n){return Ni(this,void 0,void 0,(function*(){if(t){var i;t.style.visibility="hidden",t.style.display="block",t.style.zIndex="2147483647",e.displaySettings.config.blocking?(t.style.height=window.innerHeight+"px",t.style.width="100%"):(t.style.height=getComputedStyle(t.contentDocument.body).height,t.style.width=getComputedStyle(t.contentDocument.body).width,e.templateType===An.POP_UP&&(t.style.margin="0px auto"),-1Ni(this,void 0,void 0,(function*(){yield Ri(t.htmlJsonPayload,e.campaignId,n,e,On)})):(i=Li.createDefaultIframe(e.campaignId,this.campaignRenderMap[e.campaignId].data.payload),this.campaignRenderMap[e.campaignId].iframe=i),yield this.campaignRenderMap[e.campaignId].waitForDelay,yield this.canCampaignBeRendered(e)){if(ut.warn(1,a,"Going to render "+e.campaignId),(null===(n=t.payload)||void 0===n?void 0:n.code)===te.GCG_ERROR_CODE)return ut.warn(1,a,`Can not render ${e.campaignId} as it falls under Control Group.`),void On(e,"OSM",!0)();this.campaignRenderMap[e.campaignId].setIsActive(!0),null!=this.renderListener&&this.renderListener(e),this.renderAllActiveCampaigns()}else ut.warn(1,a,"Can not render "+e.campaignId);else ut.warn(1,a,`Can not render ${e.campaignId}, as campaign is already Active.`)}catch(i){ut.error(1,a,"Error queuing campaign "+e.campaignId,i)}}))}renderAllActiveCampaigns(){return Ni(this,void 0,void 0,(function*(){var e,t=Li.baseLogTag+".renderAllActiveCampaigns";const n=this.getActiveCampaigns();if(this.restoreBodyStyle(),0{Mi.setScrollState(n),n[i].iframe.contentWindow.postMessage({campaignId:n[i].campaignMeta.campaignId},"*"),"1"===n[i].campaignMeta.editorVersion?(this.handleBridgeInsertion(n[i].iframe.contentDocument,n[i].campaignMeta.campaignId,n[i].campaignMeta),this.changeAnchorTagReDirectionMethod(n[i].iframe)):this.handleClassBasedTracking(n[i]),n[i].onFrameLoad.res()})}yield n[i].onFrameLoad.p,n[i].isJSONPayloadApproach?(ut.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].osmDivSelector.style.zIndex=(2147483647-(n.length-i-1)).toString(),this.liveCampaignPositionStyling(n[i].campaignMeta,n[i].osmDivSelector)):(n[i].iframe.style.visibility="hidden",n[i].iframe.style.display="block",ut.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].iframe.style.zIndex=(2147483647-(n.length-i-1)).toString(),n[i].iframe.style.margin="0",n[i].campaignMeta.display.config.blocking?(n[i].iframe.style.height=window.innerHeight+"px",n[i].iframe.style.width="100%"):(n[i].iframe.style.height=getComputedStyle(n[i].iframe.contentDocument.body).height,n[i].iframe.style.padding.includes("10px")?n[i].iframe.style.width=parseInt(getComputedStyle(n[i].iframe.contentDocument.body).width)+20+"px":n[i].iframe.style.width=getComputedStyle(n[i].iframe.contentDocument.body).width,n[i].campaignMeta.templateType===An.POP_UP&&(n[i].iframe.style.margin="0px auto"),n[i].data.payload&&-1{const e=this.campaignRenderMap[n[i].campaignMeta.campaignId];e&&e.isActive()&&(this.dismissInapp(n[i].campaignMeta.campaignId),window.MoeFocusHandler&&window.MoeFocusHandler(),Cn(n[i].campaignMeta,"OSM",!0))}),e))}else n[i].iframe.style.zIndex=(2147483647-(n.length-i-1)).toString();this.bannerLiveCampaignsStyling(n)}}))}restoreBodyStyle(){this.removeOSMPusher(),this.pushCardsTemplate(0);let e=0;Object.keys(this.campaignRenderMap).forEach((t=>{this.campaignRenderMap[t].campaignMeta.templateType===An.POP_UP&&this.campaignRenderMap[t].isActive()&&e++})),1<=e||(this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"))}canCampaignBeRendered(e){return Ni(this,void 0,void 0,(function*(){var t=Li.baseLogTag+".queueLiveCampaign";try{var n=yield yn.campaingsStatsStore.getItem(e.campaignId),i=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY),a=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME);return Nn.isValid(e,n)&&Nn.isValidMessagingCampaign(e,n,i,a,this.getActiveCampaigns())&&ei.getURLFilterResult(e)}catch(n){ut.error(1,t,`Error checking if campaign ${e.campaignId} can be rendered:`,n)}return!1}))}static createDefaultIframe(e,t){Li.baseLogTag,e=Wn(e);const n=document.createElement("iframe");return n.setAttribute("id",e),n.style.left="0px",n.style.top="0px",n.style.bottom="0px",n.style.right="0px",n.style.border="0px none",n.style.height="100%",n.style.width=window.innerWidth.toString()+"px",n.style.padding="0",n.style.overflow="hidden",n.style.overflowY="hidden",n.style.zIndex="999999",n.style.display="none",n.style.position="fixed",n.setAttribute("srcdoc",t),n}onRender(e){this.renderListener=e}getActiveCampaigns(){return this.campaignRenderOrder.map((e=>this.campaignRenderMap[e])).filter((e=>e.isActive()))}destroy(){this.getActiveCampaigns().forEach((e=>{e.setIsActive(!1)})),this.renderAllActiveCampaigns(),this.campaignRenderOrder=[],this.campaignRenderMap={}}adjustPositionOfCampaign(e,t,n){t&&(Object.assign(e,Di[t]),qe()&&n&&this.addMarginInMweb(e,t))}addMarginInMweb(e,t){const n={paddingLeft:"10px",paddingRight:"10px",marginTop:"0",marginBottom:"0"};"TOP"===t&&(n.marginTop="10px"),"BOTTOM"===t&&(n.marginBottom="10px"),Object.assign(e,n)}handleBridgeInsertion(e,t,n){var i=Li.baseLogTag+".handleBridgeInsertion";try{e.head.append(((e,t)=>{const n=document.createElement("script");return n.type="text/javascript",n.text=(t=t,`\n const moeSDK = window.parent.Moengage;\n let moeOsmCampaignMeta = ${JSON.stringify(e)};\n const moengage = {\n trackEvent: function (eventName, eventAttr, isNonInteractive) {\n if(moeOsmCampaignMeta) {\n return moeSDK.track_event(eventName, eventAttr);\n }\n return Promise.resolve();\n },\n trackClick: function (id) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.clickTracker(OsmCampaignMeta, 'OSM', {\n widget_id: id,\n })();\n }\n return Promise.resolve();\n },\n trackDismiss: function (isAuto = false) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.dismissEvent(OsmCampaignMeta, 'OSM', isAuto);\n }\n return Promise.resolve();\n },\n setAlias: function (data) {\n return moeSDK.update_unique_user_id(data);\n },\n setUniqueId: function (data) {\n return moeSDK.add_unique_user_id(data);\n },\n destroySession: function () {\n return moeSDK.destroy_session();\n },\n setUserName: function (data) {\n return moeSDK.add_user_name(data);\n },\n setFirstName: function (data) {\n return moeSDK.add_first_name(data);\n },\n setLastName: function (data) {\n return moeSDK.add_last_name(data);\n },\n setEmailId: function (data) {\n return moeSDK.add_email(data);\n },\n setMobileNumber: function (data) {\n return moeSDK.add_mobile(data);\n },\n setGender: function (data) {\n return moeSDK.add_gender(data);\n },\n setBirthDate: function (data) {\n //iso date format only\n return moeSDK.add_birthday(data);\n },\n setUserAttribute: function (name, value) {\n return moeSDK.add_user_attribute(name, value);\n },\n dismissMessage: function () {\n setTimeout(() => {\n moeSDK.onsite.displayManager.dismissInapp('${t}');\n }, 100)\n },\n showPushOptIn: function (config) {\n return moeSDK.call_web_push(config);\n },\n copyText: function (selector) {\n return new Promise((res, rej) => {\n if(!selector) rej();\n var text = document.querySelector(selector);\n if(text.textContent) {\n navigator.clipboard.writeText(text.textContent);\n res(null);\n }\n else {\n text.select();\n text.setSelectionRange(0, 99999);\n navigator.clipboard.writeText(text.value);\n res(null);\n }\n })\n }\n }\n const MoeOsm = moengage;\n `),n.setAttribute("data-moe-script","1"),n})(n,t)),ut.log(2,i,"JS-bridge script inserted successfully",t)}catch(e){ut.warn(2,i,"Failed to insert OSM JS Bridge: ",t)}}handleClassBasedTrackingForTestCampaign(e,t,n){const i=Li.baseLogTag+".handleClassBasedTrackingForTestCampaign";var a=e=>Array.prototype.slice.call(e),r=a(e.contentDocument.getElementsByClassName(te.CSS_SELECTORS.DISMISS_INAPP)),o=a(e.contentDocument.getElementsByClassName(te.CSS_SELECTORS.CLICK_INAPP));if(a=a(e.contentDocument.getElementsByTagName("a")),0===r.length&&ut.warn(1,i,"No dismiss class items present in this template"),0===o.length&&ut.warn(1,i,"No click class items present in this template"),-1{e.target&&e.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)&&ut.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live"),e.target&&e.target.classList.contains(te.CSS_SELECTORS.DISMISS_INAPP)&&this.dismissTestInapp(n.draftId)}));else{for(const e of o)e.addEventListener("click",(e=>{ut.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live")}));for(const e of r)e.addEventListener("click",(()=>{this.dismissTestInapp(n.draftId)}))}for(const e of a)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}handleClassBasedTracking(e){var t=Li.baseLogTag+".handleClassBasedTracking",n=e=>Array.prototype.slice.call(e);const i=e.iframe;var a=n(i.contentDocument.getElementsByClassName(te.CSS_SELECTORS.DISMISS_INAPP)),r=n(i.contentDocument.getElementsByClassName(te.CSS_SELECTORS.CLICK_INAPP));if(n=n(i.contentDocument.getElementsByTagName("a")),0===a.length&&ut.warn(1,t,"No dismiss class items present in this template"),0===r.length&&ut.warn(1,t,"No click class items present in this template"),e.data.payload&&(-1{var n;t.target&&t.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)&&(n=t.target.dataset.id,Dn(e.campaignMeta,"OSM",{widget_id:n})()),t.target&&t.target.classList.contains(te.CSS_SELECTORS.DISMISS_INAPP)&&(this.dismissInapp(e.campaignMeta.campaignId),t.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)||Cn(e.campaignMeta,"OSM"))}));else{for(const t of r)t.addEventListener("click",(t=>{t=t.target.dataset.id,Dn(e.campaignMeta,"OSM",{widget_id:t})()}));for(const t of a)t.addEventListener("click",(()=>{this.dismissInapp(e.campaignMeta.campaignId),t.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)||Cn(e.campaignMeta,"OSM")}))}for(const e of n)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}changeAnchorTagReDirectionMethod(e){var t,n=Li.baseLogTag+".changeAnchorTagReDirectionMethod";try{for(const n of(t=e.contentDocument.getElementsByTagName("a"),Array.prototype.slice.call(t))){var i=n.getAttribute("target"),a=n.getAttribute("href");a&&"_parent"===i&&(n.setAttribute("onclick",`setTimeout(()=>{window.open('${a}','_parent')})`),n.removeAttribute("href"))}ut.log(1,n,"Anchor Tag Href Rendering Changed to onClick for Campaign Frame: "+e.id)}catch(t){ut.error(1,n,"Failed to Change Anchor Tag Href Rendering for Campaign Frame: "+e.id)}}liveCampaignPositionStyling(e,t){var n=Li.baseLogTag+".liveCampaignPositionStyling";try{e.templateType===An.BANNER?e.display.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===An.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),ut.log(1,n,"Added Position Styles for CampaignId: "+e.campaignId)}catch(t){ut.error(1,n,"Failed adding Styles for CampaignId: "+e.campaignId)}}testCampaignPositionStyling(e,t){var n=Li.baseLogTag+".testCampaignPositionStyling";try{e.templateType===An.BANNER?e.displaySettings.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===An.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),ut.log(1,n,"Added Position Styles for CampaignId: "+e.draftId)}catch(t){ut.error(1,n,"Failed adding Styles for CampaignId: "+e.draftId)}}bannerTestCampaignStyling(e,t,n){var i,a=Li.baseLogTag+".bannerTestCampaignStyling";try{let n,r,o=!0;t?(n=parseInt(getComputedStyle(t.contentDocument.body).height),o=-1e.campaignMeta.templateType===An.BANNER)).length-1;0<=r;r--)try{if(e[r].isJSONPayloadApproach||e[r].iframe.contentDocument){let a,o=!0;e[r].isJSONPayloadApproach?a=parseInt(getComputedStyle(e[r].osmDivSelector.querySelector(".brz-container")).height):(a=parseInt(getComputedStyle(e[r].iframe.contentDocument.body).height),o=e[r].data.payload&&-1{this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED)}))}getImpressionStats(e){return ki(this,void 0,void 0,(function*(){var t=this.baseLogTag+".getImpressionStats";try{return yield yn.campaingsStatsStore.getItem(e.campaignId)}catch(n){ut.error(1,t,"Error getting impression stats for "+e.campaignId,n)}}))}getLastGlobalInappShown(){return ki(this,void 0,void 0,(function*(){return yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME)}))}getGlobalDelay(){return ki(this,void 0,void 0,(function*(){return yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY)}))}filterValidCampaigns(e){return ki(this,void 0,void 0,(function*(){var t=this.baseLogTag+".filterValidCampaigns",n=e.map((e=>this.getImpressionStats(e)));const i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay();try{const t=yield Promise.all(n);return e.filter(((e,n)=>{if(e.templateType!==An.SELF_HANDLED){if(!Nn.isCampaignWithinFC(e,t[n]))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN),!1;if(!Nn.hasCampaignClearedSelfDelay(e,t[n]))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MIN_DELAY),!1;if(!Nn.hasCampaignClearedGlobalDelay(e,a,i))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_GLOBAL_DELAY),!1}return!Nn.isCampaignExpired(e)||(this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_EXPIRED),!1)}))}catch(n){ut.error(1,t,"Error filtering and sorting campaigns",n)}}))}prioritizeMessagingCampaigns(e){return ki(this,void 0,void 0,(function*(){const t=yield this.filterValidCampaigns(e);if(0{t.campaignId!==e.campaignId&&this.deliveryStats.setStats(t,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE)})),e}}))}getCampaignTagMap(e){const t={},n=[],i=[];return e.forEach((e=>{null!=e.tag&&(i.indexOf(e.tag)<0&&i.push(e.tag),null==t[e.tag]&&(t[e.tag]=[]),t[e.tag].push(e))})),i.forEach((e=>{if(null!=t[e]){var i=t[e].sort(Nn.comparator);for(let e=0;ethis.getOnsitePayload(e,n)));try{const n=yield Promise.all(a);return e.filter(((e,i)=>{if(n[i]&&n[i].payload&&(e.onsitePayload=n[i],null!=e.tag&&null!=t[e.tag])){if("JSON"!==e.onsitePayload.payloadType)return!0;if((e=>{try{JSON.parse(e)}catch(e){return!1}return!0})(e.onsitePayload.payload))return!0}return!1}))}catch(a){ut.error(1,i,"Error delivering personalization campaigns",a)}}}))}messagingCampaignImpression(e,t){return ki(this,void 0,void 0,(function*(){var n=this.baseLogTag+".messagingCampaignImpression";if(e)try{var i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay(),r=this.displayManager.getActiveCampaigns();return Nn.hasCampaignClearedGlobalDelay(e,a,i)?Nn.canCampaignBeRenderedOverExisting(e,r.length)?ei.getURLFilterResult(e)?null==this.displayManager.campaignRenderMap[e.campaignId]||"MOE_EXIT"!==t&&t!==T?e:(ut.warn(1,n,`Can not render ${e.campaignId} `+(this.displayManager.campaignRenderMap[e.campaignId].isActive()?", as campaign is already Active.":"")),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN)):(ut.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_CONTEXT_CHANGED)):void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE):(ut.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_GLOBAL_DELAY))}catch(i){return void ut.error(1,n,"Error delivering messaging campaign",i)}}))}mostEligibleMessagingCampaign(e,t){return ki(this,void 0,void 0,(function*(){if(0e.templateType===An.SELF_HANDLED)),c=a.filter((e=>e.templateType!==An.SELF_HANDLED));0{t[e.campaignContext.cid]||(t[e.campaignContext.cid]=e.stats,e.stats={})}));var n={stats:t};this.OnsiteApiClient.sendBeacon(n,this.batchId)}catch(n){ut.error(1,t,"Error in sending delivery funnel stats",n)}}))}setStats(e,t){var n=(new Date).toISOString();e&&(e.stats[t]=e.stats[t]||[],e.stats[t].includes(n)||e.stats[t].push(n))}}var Fi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Wi=new mt;class Hi{constructor(e){this.initializationPomise=null,this.testDraftInfo=null,this.triggerManager=null,this.displayManager=null,this.onsiteSelfHandledTriggerListeners={},this.funnelManager=null,this.eventTriggerHandler=null,this.deliveryStats=null,this.initData=e,ut.setLogLevel(e.debugLevel),this.OnsiteApiClient=new fi(this.initData),this.iframeHelper=new pi}setLogLevel(e){ut.setLogLevel(e,!1)}isTestCampaignAvailable(){return Fi(this,void 0,void 0,(function*(){const e=Hi.baseLogTag+".isTestCampaignAvailable";if(window.opener){let t;window.addEventListener("message",(n=>Fi(this,void 0,void 0,(function*(){var i,a;n.data&&"inapp_test"===n.data.action&&(i=n.data,(yield ui.isValidRawJson(i))?(t=!0,a=new ui(i),ut.log(1,e,"Valid test campaign data found checking TestCampaign",i),yield this.checkForTestCampaign(a)):ut.error(1,e,"Data is not a valid test campaign",i),Wi.res())}))),!1),window.opener.postMessage("moe_test_osm","*"),setTimeout((()=>Fi(this,void 0,void 0,(function*(){t||(yield this.checkForTestCampaign()),Wi.res()}))),100)}else Wi.res()}))}initialize(){const e=Hi.baseLogTag+".initialize";return ut.log(1,e,"Initialising onsite module"),null==this.initializationPomise&&(this.initializationPomise=new Promise((t=>Fi(this,void 0,void 0,(function*(){try{yield yn.initialize(),yield this.isTestCampaignAvailable(),Wi.p.then((()=>Fi(this,void 0,void 0,(function*(){yield this.syncCampaigns();const n=yield Un();var i=this.isExitIntentCampaignFound(n);if(i.length&&(yield this.prefetchExitIntentCampaigns(i)),i=n.filter((e=>null!=e.triggerData)),this.displayManager=new Li,this.displayManager.onRender((t=>{ut.log(1,e,"Campaign rendered: "+t.campaignId),yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME,new Date)})),null!=this.testDraftInfo&&this.testDraftInfo.draftType===te.DRAFT_CAMPAIGN_TPYES.ONSITE_MESSAGING){ut.log(1,e,"Test campaigns present, will be showing only the test campaign."),ut.log(1,e,"No live campaign will be shown till draft campaign showing");try{ut.log(1,e,"Trying to render draft campaign with id "+this.testDraftInfo.draftId);var a=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo);ut.log(1,e,"Test campaign payload: ",a),a&&this.displayManager.queueDraftCampaign(this.testDraftInfo,a)}catch(n){ut.error(1,e,`Error fetching data for test campaign ${this.testDraftInfo.draftId}: `,n)}}else this.deliveryStats=new Ui(this.initData),this.triggerManager=new Ai(i),this.funnelManager=new xi(this.initData,this.displayManager,this.deliveryStats),this.eventTriggerHandler=new Bi,i=this.eventTriggerHandler.handler.bind(null,this.funnelManager,this.onsiteSelfHandledTriggerListeners,this.handlePersonalizationCampagins.bind(this),this.handleMessagingCampaigns.bind(this)),this.triggerManager.onTrigger(i),bi.setListener(i),Ti.setDeliveryStats(this.deliveryStats),bi.setDeliveryStats(this.deliveryStats),yield bi.logDeliveryFunnelForExpiredTimerCampaigns(),yield Ti.updateCampaignTimeInSecondaryEventsStore(),yield bi.createNewTimers(),this.triggerManager.startWatching();t(!0)}))))}catch(t){ut.error(1,e,t)}}))))),this.initializationPomise}handleMessagingCampaigns(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".handleMessagingCampaigns";e.onsitePayload&&(ut.log(1,t,"Campaign triggered: "+e.campaignId),ut.log(1,t,"Payload for campaign:",e.onsitePayload),this.displayManager.queueLiveCampaign(e,e.onsitePayload))}))}handlePersonalizationCampagins(e){return Fi(this,void 0,void 0,(function*(){const t=Hi.baseLogTag+".handlePersonalizationCampagins";0{null!=e.tag&&(ut.log(1,t,"Personlization Campaign triggered: "+e.campaignId),this.onsiteSelfHandledTriggerListeners[e.tag].forEach((t=>{this.handleSelfHandledCallback(e,e.onsitePayload,t)})))}))}))}logout(){var e;return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".logout";if(ut.log(1,t,"Starting module logout"),this.initializationPomise=null,this.displayManager){const t=Object.keys(this.displayManager.campaignRenderMap);null!==(e=this.displayManager.testCampaign)&&void 0!==e&&e.draftId&&t.push(null===(e=this.displayManager.testCampaign)||void 0===e?void 0:e.draftId),t.forEach((e=>{const t=document.getElementById("moe-onsite-campaign-"+e);t&&t.remove()})),this.displayManager.destroy()}this.triggerManager&&this.triggerManager.destory(),Ti.destroy(),bi.destroy(),this.displayManager=null,this.funnelManager=null,this.eventTriggerHandler=null,yield bi.deleteAllPendingTimers(),yield yn.clear(),ut.log(1,t,"Starting module logout complete")}))}checkForTestCampaign(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".checkForTestCampaign";try{var n=e||(yield this.iframeHelper.getDraftCampaignInfo());null==n?(ut.log(1,t,"No draft campaign found"),this.testDraftInfo=null):(ut.log(1,t,"Found draft campaign: ",n),this.testDraftInfo=n,null==this.testDraftInfo.draftId&&(this.testDraftInfo.draftType=te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON))}catch(n){ut.error(1,t,"Error getting test campaign",n)}}))}getData(e,t){return Fi(this,void 0,void 0,(function*(){const n=Hi.baseLogTag+".getData";null==t&&(ut.warn(1,n,"Moengage.onsite.getData called without a providing a callback."),t=()=>{});try{if(yield this.initializationPomise,null!=this.testDraftInfo){var i;ut.log(1,n,"Fetching test campaign: ",this.testDraftInfo),this.testDraftInfo.draftType===te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON&&(i=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo),t(null,{payload:i.payload,click:()=>{ut.log(1,n,"This is a test campaign")},imp:()=>{ut.log(1,n,"This is a test campaign")}}))}else{const i=yield yn.campaingsTagsStore.getItem(e);if(i){const o=yield Promise.all(i.map((e=>Bn(e))));var a=o.filter((e=>null==e.triggerData)),r=yield this.funnelManager.mostEligibleSelfHandledPersonalizationCampaigns(a,e);r&&r.onsitePayload?this.handleSelfHandledCallback(r,r.onsitePayload,t):(ut.error(1,n,"Error fetching campaign payload"),t({message:"There was an error fetching data for this tag"},null))}else ut.warn(1,n,"Could not find any eligible campaign for tag",e),t({message:"Could not find any eligible campaign for tag "+e},null)}}catch(i){ut.error(1,n,"Error getting campaign",i)}}))}registerCallback(e,t){return Fi(this,void 0,void 0,(function*(){var n=Hi.baseLogTag+".registerCallback";try{yield this.initializationPomise,null==this.onsiteSelfHandledTriggerListeners[e]?this.onsiteSelfHandledTriggerListeners[e]=[t]:this.onsiteSelfHandledTriggerListeners[e].push(t)}catch(t){ut.error(1,n,"Error setting callback for tag",e),ut.error(1,n,"Error stack:",t)}}))}handleSelfHandledCallback(e,t,n){return Fi(this,void 0,void 0,(function*(){var i=Hi.baseLogTag+".handleSelfHandledCallback";if(e.campaignContext=t.campaignContext,"JSON"===t.payloadType)try{t.payload=JSON.parse(t.payload);var a=Te(e,"triggerData.trigger_delay.delayInSeconds",0)||0;setTimeout((()=>{Pn(e,"WP"),n(null,{payload:t.payload,click:t=>{Dn(e,"WP",t)()},imp:On(e,"WP")})}),1e3*a)}catch(r){a=`Payload for campaign_id ${e.campaignId} is not a valid JSON`,ut.error(1,i,a),ut.error(1,i,"Payload provided:",t.payload),n({message:a},null)}else Pn(e,"WP"),n(null,{payload:t.payload,click:t=>{Dn(e,"WP",t)()},imp:On(e,"WP")})}))}syncCampaigns(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".syncCampaigns";try{(yield this.shouldClearMetaStorage())&&(yield yn.campaingsMetaStore.clear(),yield this.rebuildTagStore()),(yield this.shouldSaveRemoteCampaigns())&&(yield this.saveRemoteCampaigns())}catch(t){ut.error(1,e,"Error getting remote campaigns: ",t)}}))}shouldClearMetaStorage(){return Fi(this,void 0,void 0,(function*(){return(yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION))!==Qe().getSdkVersion()}))}shouldSaveRemoteCampaigns(){var e;return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".shouldSaveRemoteCampaigns",n=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION),i=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_META_CALL_TIME),a=(i=new Date(i),(new Date).getTime());return null==i||a-i>te.META_REFRESH_TIME||(ut.remoteLogTracking(1,"info",t,"Last fetch was less than 15 mins ago at ",i),n!==Qe().getSdkVersion()?(ut.remoteLogTracking(1,"info",t,"Version change detected. Will proceed to fetch latest campaigns"),!0):!(!(n=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.UNIQUE_ID))||n===(null===(e=We.get(r.USER_DATA))||void 0===e?void 0:e.deviceUuid)||(ut.remoteLogTracking(1,"info",t,"Unique device id change detected. Will proceed to fetch latest campaigns"),0)))}))}saveRemoteCampaigns(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".saveRemoteCampaigns";yield yn.campaingsMetaStore.clear(),yield yn.exitIntentCampaignStore.clear();var t=yield this.OnsiteApiClient.getCampaignsMeta();null!=t&&(yield this.addCampaignsToDB(t.campaignsMeta),ut.log(1,e,"Inapp campaigns meta saved!")),yield Ti.pruneRemovedCampaigns(),yield Ti.removeStaleTriggeringPrimaryEventCampaigns(),yield yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY,t.globalDelayBetweenInapps),yield yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION,Qe().getSdkVersion())}))}addCampaignsToDB(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".addCampaignsToDB";ut.log(1,t,`Adding/Updating ${e.length} campaigns in DB`,e.map((e=>e.campaignId)));try{yield Promise.all(e.map((e=>yn.campaingsMetaStore.setItem(e.campaignId,e)))),yield this.rebuildTagStore()}catch(e){ut.error(1,t,"Error saving remote campaigns:",e)}}))}rebuildTagStore(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".rebuildTagStore";try{yield yn.campaingsTagsStore.clear();var t=yield Un();const e={};for(const n of t)null!=n.tag&&(null==e[n.tag]&&(e[n.tag]=[]),e[n.tag].push(n.campaignId));const n=[];yield yn.campaingsTagsStore.clear();for(const t in e)e.hasOwnProperty(t)&&n.push(yn.campaingsTagsStore.setItem(t,e[t]));yield Promise.all(n)}catch(t){ut.error(1,e,"Error updating tags store:",t)}}))}isExitIntentCampaignFound(e){return e.filter((e=>e.templateType!==An.SELF_HANDLED&&kn(e,_)))}prefetchExitIntentCampaigns(e){return Fi(this,void 0,void 0,(function*(){var t=Hi.baseLogTag+".prefetchExitIntentCampaigns";const n=yield Jt.createEvent("MOE_EXIT",[]),i=(yield Ln(e)).filter((e=>ei.getFilterResult(n,e)));if(!i||!i.length)return ut.log(1,t,"Exit intent campaign not eligible to prefetch"),!1;{const e=yield xn(i[0]);if(!e||!e.onsitePayload||e.onsitePayload.updatedTime.getTime()!==i[0].updatedTime.getTime()){var a=i[0].campaignId;const e=yield this.OnsiteApiClient.getCampaignPayload(i[0]);e.payload||e.htmlJsonPayload?(e.updatedTime=i[0].updatedTime,yield yn.exitIntentCampaignStore.setItem(a,e),ut.log(1,t,"Exit intent campaign prefetched: "+a)):e.error&&e.reason&&(yield yn.exitIntentCampaignStore.setItem(a,e))}}}))}refresh(){return Fi(this,void 0,void 0,(function*(){$i.onsite.appId&&(yield Zi(),Qi())}))}sendDelayCampaignStats(){return Fi(this,void 0,void 0,(function*(){var e=Hi.baseLogTag+".sendDelayCampaignStats",t=Object.keys(this.displayManager.campaignRenderMap).filter((e=>!this.displayManager.campaignRenderMap[e].campaignRendered));0{var e;const t=window.Moengage;if(t.onsite){if(t.onsite.displayManager){t.onsite.triggerManager&&null!==(e=null===(e=t.onsite.triggerManager.primaryEventsHash)||void 0===e?void 0:e.MOE_PAGE_SCROLL)&&void 0!==e&&e.length&&window.removeEventListener("scroll",t.onsite.triggerManager.getScrollListenerCallback());const n=t.onsite.displayManager,i=Object.keys(n.campaignRenderMap);t.onsite.sendDelayCampaignStats&&t.onsite.sendDelayCampaignStats(),i.forEach((e=>{document.getElementById("moe-onsite-campaign-"+e)&&document.getElementById("moe-onsite-campaign-"+e).remove(),n.campaignRenderMap[e].isActive()&&n.dismissInapp(e),clearTimeout(n.campaignRenderMap[e].delayTimer),delete n.campaignRenderMap[e],n.campaignRenderOrder=n.campaignRenderOrder.filter((t=>t!==e))})),setTimeout((()=>{qe()?t.onsite.triggerManager.windowEventManager.isPopStateEventBound&&(t.onsite.triggerManager.windowEventManager.setHistoryState(),t.onsite.triggerManager.windowEventManager.isExitIntentShown=!1,t.onsite.triggerManager.windowEventManager.scrollExitIntentInterval=null):document.removeEventListener("mouseout",t.onsite.triggerManager.windowEventManager.exitIntentListener)}),0)}$t.resetListeners(),t.onsite.initializationPomise=null,t.onsite.initialize&&t.onsite.initialize()}})(),window.MoeFocusHandler&&window.MoeFocusHandler(),window.Moengage.shouldClearPrevEvents=(new Date).getTime(),Xt.clear(),Xt.clearListeners(),$i.track_page_view();var i=$i.onsite.triggerManager;0<(null===(e=null==i?void 0:i.exitIntentCampaigns)||void 0===e?void 0:e.length)&&qe()&&null!==(t=null==i?void 0:i.windowEventManager)&&void 0!==t&&t.onMobileScrollAndExit(i.onExit),nn.getWebSDKSettings().then((e=>{e.isDomainLevelStorage&&We.copyKeysFromCookie(),null!=e&&e.configs.isCardsModuleEnabled&&$i.cards&&($i.cards.checkCacheAndSaveRemote(pe),$i.cards.displayManager.closeIframe(),$i.cards.displayManager.addCardsInboxListener()),null!=e&&e.configs.isWebPersonalisationModuleEnabled&&(null!==(e=window.MoeWebP)&&void 0!==e&&e.getLiveExperiences(),ut.log(1,n,"webP sync function called"))})).catch((e=>{ut.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}Hi.baseLogTag="MoeOnsite",window[te.OSM_MODULE]=Hi,window.MoeOsm=(ut.log(1,"OsmFunctions","Osm Functions for tracking user behaviour"),{trackEvent:(e,t,n,i)=>(e=Oi(e),{}.constructor===n.constructor&&e?(n=Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName},e.campaignContext),n),window.Moengage.track_event(t,n)):Promise.resolve()),trackClick:(e,t)=>(e=Oi(e))?window.Moengage.onsite.displayManager.clickTracker(e,"OSM",{widget_id:t})():Promise.resolve(),trackDismiss:(e,t=!1)=>(e=Oi(e))?window.Moengage.onsite.displayManager.dismissEvent(e,"OSM",t):Promise.resolve(),setAlias:e=>window.Moengage.update_unique_user_id(e),setUniqueId:e=>window.Moengage.add_unique_user_id(e),destroySession:()=>window.Moengage.destroy_session(),setUserName:e=>window.Moengage.add_user_name(e),setFirstName:e=>window.Moengage.add_first_name(e),setLastName:e=>window.Moengage.add_last_name(e),setEmailId:e=>window.Moengage.add_email(e),setMobileNumber:e=>window.Moengage.add_mobile(e),setGender:e=>window.Moengage.add_gender(e),setBirthDate:e=>window.Moengage.add_birthday(e),setUserAttribute:(e,t)=>window.Moengage.add_user_attribute(e,t),dismissMessage(e){setTimeout((()=>{window.Moengage.onsite.displayManager.dismissInapp(""+e)}),100)},showPushOptIn:e=>window.Moengage.call_web_push(e),copyText:e=>new Promise(((t,n)=>{e||n();const i=document.querySelector(e);i.textContent?navigator.clipboard.writeText(i.textContent):(i.select(),i.setSelectionRange(0,99999),navigator.clipboard.writeText(i.value)),t(null)}))});class Gi{constructor(){this.getDeviceUniqueId=e=>{window.addEventListener(x,(t=>{t.detail.name===B.DEVICE_UUID&&(t=t.detail.data,e(t))}))}}onUpdateDeviceId(e){this.getDeviceUniqueId(e)}trackClick(e,t){return Gi.track("MOE_WEBP_MESSAGE_CLICKED",e,t)}trackImpression(e){return Gi.track("MOE_WEBP_MESSAGE_SHOWN",e)}static track(e,t,n){var i=Gi.baseLogTag+".track";if("string"==typeof t)try{t=JSON.parse(t)}catch(e){return void ut.error(2,i,"Error parsing JSON string:",e)}var a=t&&t.cid.split("_")[0];if(!a)return Promise.reject();try{return Qe()?(ut.log(1,i,e+": Event Tracked"),Qe().track_event(e,Object.assign({campaign_id:a},t))):(window.moengage_q=window.moengage_q||[]).push({f:"track_event",a:[e,Object.assign(Object.assign({campaign_id:a},t),n)]}),Promise.resolve()}catch(e){ut.error(2,i,"Failed Tracking expression",e)}}}Gi.baseLogTag="Web Personalisation Tracking";var Vi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const ji="MoEngage";let Yi=new mt,zi=new mt;const qi={getData:(e,t)=>{nn.getWebSDKSettings().then((n=>{Yi.p.then((n=>{n.getData(e,t)}))})).catch((e=>{}))},registerCallback:(e,t)=>{nn.getWebSDKSettings().then((n=>{Yi.p.then((n=>{n.registerCallback(e,t)}))})).catch((e=>{}))}};class $i{static callWebPush(e){const t=ji+".callWebPush";nn.getWebSDKSettings().then((n=>{var i,a,r,o,s,l,c;n.isConfigured?n.optInConfig.type===Nt.TYPE.SELF_HANDLED?(ut.log(1,t,"Starting web push functions"),null!=e&&(Be.setSoftAskConfig(e),i=Te(e,"soft_ask_display_callback",null),a=Te(e,"soft_ask_allow_callback",null),r=Te(e,"soft_ask_block_callback",null),o=Te(e,"hard_ask_allow_callback",null),s=Te(e,"hard_ask_dismiss_callback",null),l=Te(e,"hard_ask_block_callback",null),c=U,sn.addCallback(c.SOFT_ASK_SHOWN,i),sn.addCallback(c.SOFT_ASK_ALLOWED,a),sn.addCallback(c.SOFT_ASK_DISMISSED,r),sn.addCallback(c.HARD_ASK_ALLOWED,o),sn.addCallback(c.HARD_ASK_DISMISSED,s),sn.addCallback(c.HARD_ASK_DENIED,l)),Et.getInstance().then((e=>{new vn(n,e).callWebPush()}))):ut.warn(1,t,"This feature can only be used when you have chosed self-handled approach in the dashboard. You can check dashboard here:",z):ut.log(1,t,"Web push settings not configured on dashboard yet. To start web push subscriptions, please configure the settings on dashboard.")})).catch((e=>{ut.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}static showNotification(e){nn.getWebSDKSettings().then((t=>{Et.getInstance().then((n=>{new vn(t,n).showNotification(e)}))})).catch((e=>{}))}static getSdkVersion(){return"5.0.690"}static setDebugLevel(e){return Vi(this,void 0,void 0,(function*(){const t=ji+".setDebugLevel";try{"number"==typeof e&&(!Be.get().disableOnsite&&$i.onsite.setLogLevel&&$i.onsite.setLogLevel(e),nn.getWebSDKSettings().then((t=>{null!=t&&t.configs.isCardsModuleEnabled&&$i.cards&&$i.cards.setLogLevel(e),null!=t&&t.configs.isWebPersonalisationModuleEnabled&&window.MoeWebP&&window.MoeWebP.setLogLevel&&window.MoeWebP.setLogLevel(e),ut.setLogLevel(e,!0)})).catch((n=>{ut.setLogLevel(e,!0),ut.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")})))}catch(e){ut.error(0,t,"Error changing log level:",e)}}))}static vitals(){var e=It.getSync();return{deviceUuid:e.deviceUuid,userDetails:e,pushToken:We.get(r.PUSH_TOKEN),softAskStatus:We.get(r.SOFT_ASK_STATUS),hardAskStatus:We.get(r.HARD_ASK_STATUS)}}static help(){var e=ji+".help";ut.log(0,e,"Moengage Dashboard - ",Y.MOE_DASHBOARD);for(const t in Y)Y.hasOwnProperty(t)&&ut.log(0,e,t,"-",Y[t])}static track_event(e,t){return Qt.track(e,t)}static add_unique_user_id(e){return Vi(this,void 0,void 0,(function*(){return yield fn.login(e)}))}static update_unique_user_id(e){return fn.updateUniqueId(e)}static add_user_attribute(e,t){return fn.addAttribute(e,t)}static add_first_name(e){return fn.addAttribute("first_name",e)}static add_last_name(e){return fn.addAttribute("last_name",e)}static add_email(e){return fn.addAttribute("email",e)}static add_mobile(e){return fn.addAttribute("mobile",e)}static add_user_name(e){return fn.addAttribute("name",e)}static add_gender(e){return fn.addAttribute("gender",e)}static add_birthday(e){return fn.addAttribute("birthday",e)}static destroy_session(){return $i.user.logout()}static call_web_push(e){$i.callWebPush(e)}static getBranch(){return"feat/OSMINAPP-6464/web-push-service-worker"}static track_page_view(){return Qt.track(l,{timestamp:Number(Date.now())}),Qt.track(c,{timestamp:Number(Date.now())})}static handle_page_change(){Ki()}}$i.user=fn,$i.event=Qt,$i.device=class{static getUuid(){return We.get(r.USER_DATA).deviceUuid}static getPushToken(){return We.get(r.PUSH_TOKEN)}static getPermissionState(e){return new Promise(((t,n)=>{nn.getWebSDKSettings().then((i=>{Et.getInstance().then((a=>{new vn(i,a).getPermissionState().then((n=>{t(n),e&&e(null,n)})).catch((t=>{n(t),e&&e(t,null)}))}))})).catch((t=>{n(t),e&&e(t,null)}))}))}},$i.onsite=qi,$i.reports=zt.reports,$i.remoteLogs=zt,$i.web_p=new Gi;var Ji=()=>{};const Xi={track_event:Ji,add_user_attribute:Ji,add_first_name:Ji,add_last_name:Ji,add_email:Ji,add_mobile:Ji,add_user_name:Ji,add_gender:Ji,add_birthday:Ji,destroy_session:Ji,add_unique_user_id:Ji,moe_events:Ji,location_type_attribute:Ji,call_web_push:Ji,setDebugLevel:Ji};function Qi(){var e;null!==(e=null===(e=$i.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId||(e=Be.get(),$i.onsite=new Hi(e),Yi.res($i.onsite),null!==(e=$i.onsite)&&void 0!==e&&e.initialize())}function Zi(){var e;return Vi(this,void 0,void 0,(function*(){null!==(e=null===(e=$i.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId&&(ut.log(1,"Moengage.disableOnsiteApi","logging out from inapp module"),yield $i.onsite.logout(),Yi=new mt,$i.onsite=qi)}))}var ea=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class ta{static initialize(){return ea(this,void 0,void 0,(function*(){var e;return null==ta.ready&&(ta.campaignStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:de,storeName:ge.STORE_NAME}),ta.metaStore=_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:de,storeName:ue.STORE_NAME}),e=[ta.campaignStore.ready(),ta.metaStore.ready()],ta.ready=Promise.all(e)),ta.ready}))}static clear(){return ea(this,void 0,void 0,(function*(){var e=ta.baseLogTag+".clear";try{yield ta.initialize(),yield Promise.all([ta.campaignStore.clear(),ta.metaStore.clear()]);var t=[ta.campaignStore.ready(),ta.metaStore.ready()];ta.ready=Promise.all(t)}catch(t){ut.error(1,e,"Error clearing cards stores:",t)}return ta.ready}))}}let na;function ia(e){const t="Pre-Initialization";if(!(e=>{const t=["bot","spider","crawler","crawling","Applebot","PetalBot","pingbot","proximic","AdsBot-Google","Googlebot","Cincraw","SnapchatBot","Snapchat-Proxy/1.0","SnapchatAds","Snapchat-Ads/1.0","YandexRenderResourcesBot","bingbot","slurp","MicrosoftPreview","Baiduspider","HeadlessChrome",...Array.isArray(e)?e:[]];return new RegExp(t.join("|"),"i").test(navigator.userAgent)})(null==e?void 0:e.bots_list)){var n=Qe();return n&&0{$t.broadcastToWindow({topic:x,name:B.MOE_INIT,data:Be.get()}),$e()===ye.WEB&&aa(),ut.setLogLevel(Be.get().debugLevel),ut.log(1,t,"Script loaded!"),ut.customLabel(1,t,"SDK Version","5.0.690"),0{$t.broadcastToWindow({topic:x,name:B.MOE_INIT_COMPLETED})}))})),e=window.moengage_object||"Moengage",window[e]=$i,$i):(ut.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",Y.WEBSDK_DOCS),Xi))}ut.error(1,t,"Bot detected, Can't initialise the MoEngage Web SDK")}ta.baseLogTag="MOE_CARDS_STORES";const aa=()=>{_e.createInstance({driver:[_e.INDEXEDDB,_e.WEBSQL,_e.LOCALSTORAGE],name:J,storeName:X}).clear()},ra=()=>new Promise((e=>{"complete"!==window.document.readyState?window.addEventListener("load",(()=>{e(!0)})):e(!0)}));window&&(window.moe=ia,window.moeBannerText="banner",window[ee]=Xt);const oa=()=>{try{var e=localStorage.getItem("moe_segment_cluster"),t=localStorage.getItem("moe_segment_sw_path"),n=localStorage.getItem("moe_segment_sw_scope");const i={};return e&&(i.cluster=e),t&&(i.swPath=t),n&&(i.swScope=n),!!(e||t||n)&&(ut.log(1,".isSegmentDataFound","Data found for segment initialisation",i),i)}catch(e){return!1}},sa=()=>{const e="Initialization";return new Promise((t=>nn.getWebSDKSettings().then((n=>(dt.setRemoteLogging(n),n.isDomainLevelStorage&&(We.isSharedWithCookie=!0,We.copyKeysFromCookie()),pn.addBeforeUnloadListeners(n),(n.configs.isBatchingEnabled||n.configs.remoteLogTracking)&&(zt.init(n),ut.log(1,e,"Enabled Batching for "+(n.configs.isBatchingEnabled?"Event Tracking":"")+(n.configs.remoteLogTracking?", Remote Logs Tracking":""))),It.get().then((i=>{if(un.get().deviceToLogout===i.deviceUuid)return ut.remoteLogTracking(1,"info",e,"User was not able to logout last time. Completing the logout now and starting new session."),$i.user.logout();i.deviceAdded&&nn.onDeviceAdd.res(),n.isPushSubBilling&&ut.warn(1,e,"You are under push subscriber based billing plan. We are only tracking users with an email, phone number or have subscribed to web push. All user attributes and events will be stored in a queue till we receive either of the properties.");var a=new vt;(new pn).onWindowVisibilityChange(a.handleBrowserInactivity),ut.customLabel(1,e,"Device UUID",i.deviceUuid),ut.customLabel(1,e,"Device Added",i.deviceAdded),$t.broadcastToWindow({topic:x,name:B.SETTINGS_FETCHED,data:n}),$t.broadcastToWindow({topic:x,name:B.DEVICE_UUID,data:i.deviceUuid}),n.isPushSubBilling||i.deviceAdded||nn.deviceAdd(),$i.track_page_view(),on.clear(r.Q.DEVICE),on.clear(r.Q.REPORT),Be.get().enableSPA&&!na&&ca(),Et.getInstance().then((t=>{var i,a;const o=!Be.get().disableWebPush&&new vn(n,t);var s,l=!(null!==(i=null===(l=window.MoeWebP)||void 0===l?void 0:l.isEditorModeEnabled)&&void 0!==i&&i.call(l));o&&o.isWebPushEnabled()&&l?(0<=[Nt.TYPE.ONE_CLICK,Nt.TYPE.TWO_STEP].indexOf(n.optInConfig.type)?o.callWebPush():(ut.log(1,e,"Self handled setting. Will show opt-in on manual invocation, if required."),o.getPermissionState().then((t=>{var n=We.get(r.PUSH_TOKEN);(t===Zt.GRANTED||null!=n&&t===Zt.DENIED)&&(t===Zt.GRANTED&&ut.log(1,e,"Notification permission already granted. Proceeding to subscribe the user"),o.callWebPush())})).catch((t=>{ut.warn(1,e,"Cannot get permission state: ",t)}))),o.trackPushOptedDeviceAttribute()):vn.SUPPORTED_BROWSERS.indexOf(t.name)<0?ut.warn(1,e,"Web push not supported on this browser. Supported browsers are:\n\t\t1. Google Chrome\n\t\t2. Mozilla Firefox\n\t\t3. Opera\n\t\t4. Edge\n\t\t5. Safari 16 and above + macOS 13 and above"):ut.warn(1,e,"Web push feature not enabled for current environment"),!Be.get().disableOnsite&&l?nn.onDeviceAdd.p.then((()=>{Qi()})):ut.warn(1,e,"Onsite is disabled in this page since `disableOnsite: true` is passed during initialization."),null!=n&&n.configs.isCardsModuleEnabled&&null!==(a=Be.get().cards)&&void 0!==a&&a.enable&&l?(s=n,Sn.loadModule(ne.CARDS).then((e=>{zi.res(e),e.initialize(s),$i.cards=e})).catch((e=>{zi.rej(e)}))):ta.clear(),la()})),t(!0)}))))).catch((n=>{ut.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),t(!1)}))))},la=()=>{const e="Moengage.clearWindowQ";ra().then((()=>{try{var t=window.moengage_object||"Moengage";if(window[t]&&window.moengage_q){let i=window.moengage_q;if(window.moengage_q=[],i&&0{const e="startSpaUrlHandler";let t=document.location.href;(()=>{na=!0,ut.log(1,e,"Start listening to URL changes");const n=document.querySelector("body"),i=new MutationObserver((n=>{n.forEach((n=>{t===document.location.href||document.location.href.includes("moe-card=1")||(t=document.location.href,ut.log(1,e,"URL Change detected",t),Ki())}))}));i.observe(n,{childList:!0,subtree:!0})})()},da={clearWindowQ:la,startSpaUrlHandler:ca,isSegmentDataFound:oa,clearEventsFromIDB:aa,moeInit:ia,windowLoaded:ra}})()})(); \ No newline at end of file +(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,i){function a(o,s){if(!n[o]){if(!t[o]){if(r)return r(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}l=n[o]={exports:{}},t[o][0].call(l.exports,(function(e){return a(t[o][1][e]||e)}),l,l.exports,e,t,n,i)}return n[o].exports}for(var r=void 0,o=0;oe.db.version;return i&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),(a||n)&&(!n||(n=e.db.version+1)>e.version&&(e.version=n),1)}function w(e){return r([function(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),a=0;a>4,l[s++]=(15&n)<<4|i>>2,l[s++]=(3&i)<<6|63&a;return r}function F(e){for(var t=new Uint8Array(e),n="",i=0;i>2],n+=P[(3&t[i])<<4|t[i+1]>>4],n+=P[(15&t[i+1])<<2|t[i+2]>>6],n+=P[63&t[i+2]];return t.length%3==2?n=n.substring(0,n.length-1)+"=":t.length%3==1&&(n=n.substring(0,n.length-2)+"=="),n}var W={serialize:function(e,t){var n="";if(e&&(n=B.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===B.call(e.buffer))){var i,a=N;e instanceof ArrayBuffer?(i=e,a+=k):(i=e.buffer,"[object Int8Array]"===n?a+="si08":"[object Uint8Array]"===n?a+="ui08":"[object Uint8ClampedArray]"===n?a+="uic8":"[object Int16Array]"===n?a+="si16":"[object Uint16Array]"===n?a+="ur16":"[object Int32Array]"===n?a+="si32":"[object Uint32Array]"===n?a+="ui32":"[object Float32Array]"===n?a+="fl32":"[object Float64Array]"===n?a+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(a+F(i))}else if("[object Blob]"===n)(n=new FileReader).onload=function(){var n="~~local_forage_type~"+e.type+"~"+F(this.result);t(N+M+n)},n.readAsArrayBuffer(e);else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,L)!==N)return JSON.parse(e);var t,n=e.substring(x),i=e.substring(L,x);i===M&&R.test(n)&&(t=(e=n.match(R))[1],n=n.substring(e[0].length));var a=U(n);switch(i){case k:return a;case M:return r([a],{type:t});case"si08":return new Int8Array(a);case"ui08":return new Uint8Array(a);case"uic8":return new Uint8ClampedArray(a);case"si16":return new Int16Array(a);case"ur16":return new Uint16Array(a);case"si32":return new Int32Array(a);case"ui32":return new Uint32Array(a);case"fl32":return new Float32Array(a);case"fl64":return new Float64Array(a);default:throw new Error("Unkown type: "+i)}},stringToBuffer:U,bufferToString:F};function H(e,t,n,i){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,i)}function G(e,t,n,i,a,r){e.executeSql(n,i,a,(function(e,o){o.code===o.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?r(e,o):H(e,t,(function(){e.executeSql(n,i,a,r)}),r)}),r):r(e,o)}),r)}function K(e,t,n,i){var a=this;e=c(e);var r=new o((function(r,o){a.ready().then((function(){var s=t=void 0===t?null:t,l=a._dbInfo;l.serializer.serialize(t,(function(t,c){c?o(c):l.db.transaction((function(n){G(n,l,"INSERT OR REPLACE INTO "+l.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){r(s)}),(function(e,t){o(t)}))}),(function(t){t.code===t.QUOTA_ERR&&(0 '__WebKitDatabaseInfoTable__'",[],(function(t,n){for(var i=[],r=0;r{let i;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:n.g):e=>(i=i||Promise.resolve()).then(e).catch((e=>setTimeout((()=>{throw e}),0)))},967:(e,t,n)=>{e.exports=function(e,t,n){if("number"!=typeof t)throw new Error("second argument must be a Number");let a,r,o,s,l,c,d=!0;function g(e){function t(){n&&n(e,a),n=null}d?i(t):t()}function u(t,n,i){if(a[t]=i,n&&(l=!0),0==--o||n)g(n);else if(!l&&c{var i=n(570),a=n(171);(n=a).v1=i,n.v4=a,e.exports=n},327:e=>{for(var t=[],n=0;n<256;++n)t[n]=(n+256).toString(16).substr(1);e.exports=function(e,n){var i=n||0;return[(n=t)[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[+i]]].join("")}},217:e=>{var t,n,i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);i?(t=new Uint8Array(16),e.exports=function(){return i(t),t}):(n=new Array(16),e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n})},570:(e,t,n)=>{var i,a,r=n(217),o=n(327),s=0,l=0;e.exports=function(e,t,n){var c=t&&n||0,d=t||[],g=(e=e||{}).node||i,u=void 0!==e.clockseq?e.clockseq:a;null!=g&&null!=u||(h=r(),null==g&&(g=i=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==u&&(u=a=16383&(h[6]<<8|h[7])));var p=void 0!==e.msecs?e.msecs:(new Date).getTime(),h=(n=void 0!==e.nsecs?e.nsecs:l+1,p-s+(n-l)/1e4);if(h<0&&void 0===e.clockseq&&(u=u+1&16383),1e4<=(n=(h<0||s>>24&255,d[c++]=n>>>16&255,d[c++]=n>>>8&255,d[c++]=255&n,p=p/4294967296*1e4&268435455,d[c++]=p>>>8&255,d[c++]=255&p,d[c++]=p>>>24&15|16,d[c++]=p>>>16&255,d[c++]=u>>>8|128,d[c++]=255&u;for(var m=0;m<6;++m)d[c+m]=g[m];return t||o(d)}},171:(e,t,n)=>{var i=n(217),a=n(327);e.exports=function(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var s=0;s<16;++s)t[r+s]=o[s];return t||a(o)}}},t={};function n(i){var a=t[i];return void 0!==a||(a=t[i]={exports:{}},e[i](a,a.exports,n)),a.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{exportForTesting:()=>ua,initializeLaunchSequence:()=>ca});const e="initData",t="browserDetails",a="unifiedLogs",r={USER_DATA:"USER_DATA",PUSH_TOKEN:"PUSH_TOKEN",SUBSCRIPTION_DETAILS:"SUBSCRIPTION_DETAILS",SETUP_TIME:"SETUP_TIME",OPT_IN_SHOWN_TIME:"OPT_IN_SHOWN_TIME",OPTED_STATUS_TRACK_TIME:"OPTED_STATUS_TRACK_TIME",SOFT_ASK_STATUS:"SOFT_ASK_STATUS",HARD_ASK_STATUS:"HARD_ASK_STATUS",WEB_SETTINGS:"WEB_SETTINGS",GRACEFUL_DATA:"GRACEFUL_DATA",Q:{PREFIX:"Q",REPORT:"REPORT",DEVICE:"DEVICE"},INIT_DATA:"INIT_DATA",OLD_SDK:{USER_DATA:"moengage_data",SUBSCRIPTION_DETAILS:"MOE_PUSH_ENDPOINT",PUSH_TOKEN:"MOE_PUSH_TOKEN"},BROWSER_DETAILS:"browserDetails",SESSION:"SESSION"},o=2,s="MOE_WEB_UNSUBSCRIBED",l="EVENT_ACTION_WEB_SESSION_START",c="MOE_PAGE_VIEWED",d="MOE_WEB_OPTIN_BANNER_LOAD",g="MOE_WEB_OPTIN_CLOSED",u="MOE_WEB_OPTIN_ACCEPTED",p="MOE_OPT_IN_SHOWN",h="MOE_OPT_IN_ALLOWED",m="MOE_OPT_IN_DISMISSED",f="MOE_OPT_IN_BLOCKED",v="MOE_OPT_IN_ATTEMPT",S="MOE_LOGOUT",E="EVENT_ACTION_DEVICE_ATTRIBUTE",y="MOE_PUSH_PERMISSION_STATE_ALLOWED",b="MOE_PUSH_PERMISSION_STATE_BLOCKED",_="MOE_PAGE_EXIT",T="MOE_PAGE_SCROLL",I="MOE_PAGE_URL_EVENT",w="USER_ATTRIBUTE_UNIQUE_ID",A="USER_ATTRIBUTE_USER_EMAIL",C="USER_ATTRIBUTE_USER_NAME",O="USER_ATTRIBUTE_USER_FIRST_NAME",D="USER_ATTRIBUTE_USER_LAST_NAME",P="USER_ATTRIBUTE_USER_MOBILE",R="USER_ATTRIBUTE_USER_GENDER",N="USER_ATTRIBUTE_USER_BDAY",L="USER_ID_MODIFIED_FROM",k=["id","first_name","last_name","email","mobile","name","gender","birthday"],M=[w,L,A,P],x="MOE_LIFECYCLE",B={MOE_INIT:"SDK_INITIALIZED",SETTINGS_FETCHED:"SETTINGS_FETCHED",EVENT_TRACKED:"EVENT_TRACKED",DEVICE_UUID:"DEVICE_UUID",MOE_INIT_COMPLETED:"SDK_INITIALIZATION_COMPLETED",CARDS_INIT:"CARDS_INITIALIZED"},U={HARD_ASK_SHOWN:"HARD_ASK_SHOWN",HARD_ASK_DISMISSED:"HARD_ASK_DISMISSED",HARD_ASK_ATTEMPTED:"HARD_ASK_ATTEMPTED",HARD_ASK_ALLOWED:"HARD_ASK_ALLOWED",HARD_ASK_DENIED:"HARD_ASK_DENIED",SOFT_ASK_SHOWN:"SOFT_ASK_SHOWN",SOFT_ASK_DISMISSED:"SOFT_ASK_DISMISSED",SOFT_ASK_ALLOWED:"SOFT_ASK_ALLOWED"},F={code:1e3,reason:"Web push not supported in current browser environment"},W={code:1001,reason:"Registering the service worker failed"},H={code:1002,reason:"Web push settings not configured"},G={code:1004,reason:"Hard ask was dismissed to many times"},K={code:1005,reason:"Service worker can not be registered on this page due to scope issues"},V="https://media.giphy.com/media/KDRv3QggAjyo/giphy.gif",j={DC_1:"sdk-01.moengage.com",DC_2:"sdk-02.moengage.com",DC_3:"sdk-03.moengage.com",DC_4:"sdk-04.moengage.com",DC_5:"sdk-05.moengage.com",DC_6:"sdk-06.moengage.com",DC_100:"sdk-100.moengage.com",eu:"sdk-02.moengage.com",in:"sdk-03.moengage.com"},Y={MOE_DASHBOARD:"https://app.moengage.com",MIGRATION_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",WEBSDK_DOCS:"https://docs.moengage.com/docs/web-sdk-integration",SELF_HANDLED_DOCS:"https://docs.moengage.com/docs/self-handled-opt-ins"},z="Dashboard --\x3e Settings --\x3e Channel --\x3e Push",q="SESSION",$="v3/sdkconfig/",J="moe_tracking",X="events",Q="batched_events",Z="moe_uuid",ee="MoengagePageEventHistoryManager",te={HOST_1:"https://sdk-01.moengage.com/",HOST_2:"https://sdk-02.moengage.com/",HOST_3:"https://sdk-03.moengage.com/",HOST_4:"https://sdk-04.moengage.com/",HOST_5:"https://sdk-05.moengage.com/",HOST_6:"https://sdk-06.moengage.com/",HOST_100:"https://sdk-100.moengage.com/",API:{META:"v3/campaigns/inapp/live",CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/live/",DRAFT_CAMPAIGN_PAYLOAD:"v3/campaigns/inapp/test/",STATS:"v3/campaigns/inapp/live/stats",CAMPAIGNS_PAYLOAD:"v3/campaigns/inapp/live/campaigns"},DRAFT_CAMPAIGN_TPYES:{WEB_PERSONALIZATON:"web_personalization",ONSITE_MESSAGING:"onsite_messaging"},META_REFRESH_TIME:9e5,DATABASE_NAME:"moe_onsite",OSM_MODULE:"moeOnsite",DELIVERY_FUNNEL:{ATTEMPTED:{CAMPAIGN_ATTEMPTED:"ATM"},PRIORITIZED:{CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE:"PRT_HIGH_PRT_CMP_AVL",CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN:"PRT_MAX_TIM_SWN",CAMPAIGN_PRIORITY_MIN_DELAY:"PRT_MIN_DEL",CAMPAIGN_PRIORITY_GLOBAL_DELAY:"PRT_GBL_DEL",CAMPAIGN_PRIORITY_EXPIRED:"PRT_EXP"},DELIVERED:{CAMPAIGN_DELIVERED_API_FAILURE:"DLV_API_FLR",CAMPAIGN_DELIVERED_MANDATORY_PARAMS_MISSING:"DLV_MAND_PARM_MIS"},IMPRESSION:{CAMPAIGN_IMPRESSION_URL_CHANGED:"IMP_URL_CHG",CAMPAIGN_IMPRESSION_GLOBAL_DELAY:"IMP_GBL_DEL",CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN:"IMP_MAX_TIM_SHW",CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE:"IMP_ANTR_CMP_VISB",CAMPAIGN_IMPRESSION_CANCEL_BEFORE_DELAY:"IMP_CNCL_BFR_DEL"},EVALUATION:{CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED:"EVL_PATH_TIME_EXP",CAMPAIGN_EVALUATION_USER_NOT_ON_APP:"EVL_USER_NOT_ON_APP"}},STORES:{CAMPAIGNS_META:{NAME:"campaigns_meta"},CAMPAIGNS_TAGS:{NAME:"campaigns_tags"},CAMPAIGNS_STATS:{NAME:"campaigns_stats"},TEST_CAMPAIGN_STORE:{NAME:"test_campaign"},EXIT_INTENT_CAMPAIGN_STORE:{NAME:"exit_intent"},SERVICE_META:{NAME:"service_meta",KEYS:{LAST_META_CALL_TIME:"last_meta_call_time",GLOBAL_DELAY:"global_delay_between_inapps",LAST_INAPP_SHOWN_TIME:"last_inapp_shown",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",UNIQUE_ID:"unique_id"}},PENDING_SECONDARY_EVENTS:{NAME:"pending_secondary_events"},PENDING_TIMER_CAMPAIGNS:{NAME:"pending_timer_campaigns"},TRIGGERING_PRIMARY_EVENTS:{NAME:"triggering_primary_events"}},EVENT_NAMES:{OSM:{CLICK:"MOE_ONSITE_MESSAGE_CLICKED",IMPRESSION:"MOE_ONSITE_MESSAGE_SHOWN",DISMISS:"MOE_ONSITE_MESSAGE_DISMISSED",AUTO_DISMIS:"MOE_ONSITE_MESSAGE_AUTO_DISMISS",TYPE:"onsite"},WP:{CLICK:"MOE_WEBP_MESSAGE_CLICKED",IMPRESSION:"MOE_WEBP_MESSAGE_SHOWN",DISMISS:"MOE_WEBP_MESSAGE_DISMISSED",DELIVERED:"MOE_WEBP_MESSAGE_DELIVERED",TYPE:"webp"}},WEB_HELPER_IFRAME_URL:"https://cdn.moengage.com/webpush/beta/webpushhelper.html",IFRAME_CHANNEL:"inapp_helper",IFRAME_TOPICS:{COOKIE_STORAGE:"COOKIE_STORAGE"},COOKIE_STORAGE:{TEST_DRAFT_TYPE:"moe_inapp_draft_type",TEST_DRAFT_ID:"moe_inapp_draft_id",TEST_DRAFT_TAG:"moe_inapp_draft_tag",TEST_CAMPAIGN_META:"test_campaign_meta",TEST_TEMPLATE_TYPE:"test_template_type",TEST_VARIATION:"moe_inapp_draft_variation",TEST_LOCALE:"moe_inapp_draft_locale"},CSS_SELECTORS:{CLICK_INAPP:"moe-inapp-click",DISMISS_INAPP:"moe-inapp-close"},EXIT_INTENT:{CONFIG:{SCROLL_DOWN_THRESHOLD:50,SCROLL_UP_THRESHOLD:5,SCROLL_INTERVAL:1e3}},POSITIONED_TEMPLATE:'data-editor-type="MOE_EDITOR"',SIDE_BANNER:'data-template-type="SIDE_BANNER"',PUSH_BANNER:"moe-osm-pusher",GCG_ERROR_CODE:"E001",SCROLL_CAMPAIGN_THROTTLING_TIME:1500},ne={CARDS:{name:"CARDS",src:"https://cdn.moengage.com/release/dc_3/versions/2.50.0/moe_webSdk_cards.min.latest.js",windowLocation:"moeCards"}},ie="moe_database",ae={NAME:"offline_data"},re="v2/sdk/report/",oe=15e3,se="number",le={TOPIC:"MOE_AUTOMATED_EVENTS",NAMES:[s,l,c,d,g,u,"MOE_USER_SUBSCRIBED",v,p,h,m,f,y,b,S,te.EVENT_NAMES.OSM.CLICK,te.EVENT_NAMES.OSM.IMPRESSION,te.EVENT_NAMES.OSM.DISMISS,te.EVENT_NAMES.OSM.AUTO_DISMIS]},ce=[v],de="IOS_PERMISSION_DENIED",ge="moe_push_opted",ue="v1/sdk_logging/",pe="v2/device/add",he="v2/device/token-check",me="v2/report/add",fe={TV:"tv",TABLET:"tablet",MOBILE:"mobile",WEB:"web"},ve="appOpen",Se="User is offline.",Ee=["Google Chrome","Mozilla Firefox","Opera","Apple Safari","Edge"];var ye,be=n(483);function _e(e,t,n){return null!=e&&t?(e=e[(t=Array.isArray(t)?t:t.split("."))[0]])&&1{})),this.zIndex=_e(e,"zIndex","999999"),this.fontFaces=(null===(e=e.fontFaces)||void 0===e?void 0:e.map((e=>new Ne(e))))||[]}}we.baseLogTag="CardsConfigModel";class Ae{constructor(e){this.backgroundColor=_e(e,"backgroundColor","#00237C"),this.text=_e(e,"text","Notification"),this.color=_e(e,"color","#fff"),this.fontSize=_e(e,"fontSize","16px"),this.fontFamily=_e(e,"fontFamily","inherit")}}class Ce{constructor(e={}){this.img=_e(e,"img","https://app-cdn.moengage.com/sdk/cards-error.svg"),this.text=_e(e,"text",'Error something went wrong ')}}class Oe{constructor(e){this.headerFontSize=_e(e,"headerFontSize","16px"),this.descriptionFontSize=_e(e,"descriptionFontSize","14px"),this.ctaFontSize=_e(e,"ctaFontSize","12px"),this.fontFamily=_e(e,"fontFamily","inherit"),this.horizontalRowColor=_e(e,"horizontalRowColor","#D9DFED")}}class De{constructor(e){this.mWebIcon=_e(e,"mWebIcon","https://app-cdn.moengage.com/sdk/back-icon.svg"),this.webIcon=_e(e,"webIcon","https://app-cdn.moengage.com/sdk/cross-icon.svg"),this.callBack=_e(e,"callBack",(()=>{}))}}class Pe{constructor(e){this.inactiveTabFontColor=_e(e,"inactiveTabFontColor","#7C7C7C"),this.fontSize=_e(e,"fontSize","14px"),this.fontFamily=_e(e,"fontFamily","inherit"),this.backgroundColor=_e(e,"backgroundColor","#F6FBFC"),this.active=new Le(_e(e,"active",{}))}}class Re{constructor(e){this.color=_e(e,"color","red"),this.enable=_e(e,"enable",!1)}}class Ne{constructor(e){this.family=_e(e,"family",""),this.url=_e(e,"url","")}}class Le{constructor(e){this.color=_e(e,"color","#06A6B7"),this.underlineColor=_e(e,"underlineColor","#06A6B7"),this.backgroundColor=_e(e,"backgroundColor","transparent")}}class ke{constructor(e){this.enable=_e(e,"enable",!1),this.icon=_e(e,"icon","https://app-cdn.moengage.com/sdk/bell-icon.svg"),this.postion=_e(e,"postion","0px 10px 40px 0"),this.countBackgroundColor=_e(e,"countBackgroundColor","#FF5A5F"),this.countColor=_e(e,"countColor","#fff"),this.zIndex=_e(e,"zIndex","999998"),this.iconBackgroundColor=_e(e,"iconBackgroundColor","#D9DFED"),this.fontFamily=_e(e,"fontFamily","inherit")}}class Me{constructor(e){this.img=_e(e,"img","https://app-cdn.moengage.com/sdk/cards-no-result.svg"),this.text=_e(e,"text","No notifications to show, check again later.")}}class xe{constructor(e){this.debugLevel=0,this.cluster=null,this.environment=null,this.baseDomainName="https://sdk-01.moengage.com/",this.inapp=null,this.customSoftAsk=null;var t=xe.baseLogTag+".constructor";null!=_e(e,"app_id",null)?(this.appId=_e(e,"app_id",null),this.integrationType=ye.OLD_SDK):null!=_e(e,"appId",null)?(this.appId=_e(e,"appId",null),this.integrationType=ye.NEW_SDK):(gt.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",Y.WEBSDK_DOCS),this.integrationType=null),null!=_e(e,"debug_logs",null)?this.debugLevel=_e(e,"debug_logs",0):null!=_e(e,"debugLevel",null)?this.debugLevel=_e(e,"debugLevel",0):(gt.log(2,t,"No log level config found. Using default value of",0),this.debugLevel=0),this.appId&&(this.baseDomainName="https://sdk-01.moengage.com/",this.forceSwUpdate=_e(e,"forceSwUpdate",!1),this.cluster="DC_3",this.cluster=_e(e,"cluster",this.cluster),this.cluster&&null!=j[this.cluster]&&(this.environment=j[this.cluster]),_e(e,"environment",null)&&(this.environment=e.environment),this.environment&&(this.baseDomainName="https://"+this.environment+"/"),0{let n=t.trim();"%"===n.slice(-1)&&(n+="25");try{return decodeURIComponent(n)}catch(t){return gt.error(2,e,"Error decoding cookie:",n,t),n}}))}}Be.baseTag="CookieStorage";const Ue="MOE_DATA";class Fe{static setPrefix(e){Fe.prefix=e+"_"}static set(e,t){if(Fe.baseLogTag,e=Fe.prefix+e,localStorage){const n=Fe.getMoeData();n[e]=t,localStorage.setItem(Ue,JSON.stringify(n))}var n=Fe.KEYS_SHARED_WITH_COOKIE.indexOf(e);if(Fe.isSharedWithCookie&&0<=n){const i="object"!=typeof t||Array.isArray(t)?t:Object.assign({},t);0===n&&Array.isArray(i.attributes)&&(i.attributes=i.attributes.filter((e=>!!M.includes(e.key)))),e===r.SUBSCRIPTION_DETAILS&&(i.domain=t.domain,i.token=t.token,i.endpoint=t.endpoint,i.keys=t.keys),Be.set(e,i)}}static get(e){return Fe.baseLogTag,e=Fe.prefix+e,localStorage?_e(Fe.getMoeData(),e,null):null}static remove(e){var t=Fe.baseLogTag+".remove",n=Fe.prefix+e;if(localStorage&&null!=Fe.get(e)){const i=Fe.getMoeData();delete i[n],localStorage.setItem(Ue,JSON.stringify(i)),gt.log(2,t,"Key",e,"removed.")}Fe.isSharedWithCookie&&0<=Fe.KEYS_SHARED_WITH_COOKIE.indexOf(e)&&Be.remove(e)}static logout(){const e=["INIT_DATA","Q","WEB_SETTINGS","SUBSCRIPTION_DETAILS","PUSH_TOKEN","GRACEFUL_DATA"];for(const t in r)e.indexOf(t)<0&&Fe.remove(r[t]);for(const e in r.Q)Ie.purge(e)}static getString(e){if(e=Fe.prefix+e,localStorage)return"string"==typeof(e=Fe.get(e))||e instanceof String?e:JSON.stringify(e)}static removePrefix(){Fe.prefix=""}static copyKeysFromCookie(){for(let n=0;n{var n=e.findIndex((e=>e.key===t.key));0<=n?e[n]=t:e.push(t)})),e=e.filter((e=>!(M.includes(e.key)&&n.attributes.findIndex((t=>t.key===e.key))<0))),n.attributes=e}Fe.set(e,n)}}Fe.removeStaleKeysFromLS()}static removeStaleKeysFromLS(){var e=Fe.baseLogTag+".removeStaleKeysFromLS";try{Object.keys(Fe.getMoeData()).forEach((e=>{this.KEYS_SHARED_WITH_COOKIE.includes(e)&&!Be.get(e)&&Fe.remove(e)}))}catch(t){gt.error(1,e,t)}}static getMoeData(){var e=Fe.baseLogTag+".getMoeData",t=localStorage.getItem(Ue);if(null==t)return{};try{return JSON.parse(t)}catch(t){return gt.error(1,e,t),{}}}}function We(e){return 0===Object.keys(e).length&&e.constructor===Object}function He(e){e=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e>18,s=(258048&d)>>12,l=(4032&d)>>6,c=63&d,t+=n[o]+n[s]+n[l]+n[c];return 1==e?(d=i[r],o=(252&d)>>2,s=(3&d)<<4,t+=n[o]+n[s]+"=="):2==e&&(d=i[r]<<8|i[1+r],o=(64512&d)>>10,s=(1008&d)>>4,l=(15&d)<<2,t+=n[o]+n[s]+n[l]+"="),t}function Ke(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?"vapid"===e.chrome.subscriptionMode&&e.chrome.vapidPublicKey:t.isFirefox()&&"vapid"===e.firefox.subscriptionMode&&e.firefox.vapidPublicKey}function Ve(e,t){return t.isChrome()||t.isOpera()||t.isEdge()||t.isSafari()?e.chrome.vapidPublicKey:t.isFirefox()?e.firefox.vapidPublicKey:""}function je(){const e=xe.get().swPath;return!(!e||!e.includes("tools/moengage"))}function Ye(e){return e.replace(/[\uff0e]/g,".")}function ze(){const e=navigator.userAgent;return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))}function qe(){var e=navigator.userAgent.toLowerCase(),t=/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(e);return/nexus player|neo-x5|adt-2|tsbnettv|roku|tizen|smart-tv.+(samsung)|hbbtv.+maple;(\d+)|(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))|(apple) ?tv|crkey|droid.+aft(\w)( bui|\))|\(dtv[\);].+(aquos)|(aquos-tv[\w ]+)\)|(bravia[\w ]+)( bui|\))|(mitv-\w{5}) bui|Hbbtv.*(technisat) (.*);|\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)|hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)|\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i.test(e)?fe.TV:t?fe.TABLET:ze()?fe.MOBILE:fe.WEB}function $e(e,t){const n=t&&new RegExp("^("+t.join("|")+")$");return qe()===fe.TV&&(null!=n&&n.test(e)||!t)?{moe_os_type:function(){var e=navigator.userAgent.toLowerCase();return/tizen/i.test(e)?"Tizen":/web0s/i.test(e)?"WebOS":/xbox/i.test(e)?"Xbox":/vizio/i.test(e)?"viziotv":"SmartTV"}(),os:fe.TV.toUpperCase()}:{}}function Je(e){return new Date(Date.parse(e))}function Xe(){return window[window.moengage_object||"Moengage"]}Fe.baseLogTag="PersistentStorage",Fe.prefix="",Fe.isSharedWithCookie=!1,Fe.KEYS_SHARED_WITH_COOKIE=[r.USER_DATA,r.SUBSCRIPTION_DETAILS,r.SOFT_ASK_STATUS,r.PUSH_TOKEN,r.OPT_IN_SHOWN_TIME,r.HARD_ASK_STATUS,r.SESSION];const Qe=e=>"string"==typeof e,Ze=e=>"[object Date]"===Object.prototype.toString.call(e);function et(e){return"object"==typeof e&&!Ze(e)}function tt(e,t){if(null==e||null==t)return e===t;if(e instanceof Function)return e===t;if(e instanceof RegExp)return e===t;if(e===t||e.valueOf()===t.valueOf())return!0;if(Array.isArray(e)&&e.length!==t.length)return!1;if(e instanceof Date)return!1;if(!(e instanceof Object))return!1;if(!(t instanceof Object))return!1;const n=Object.keys(e);return Object.keys(t).every((e=>-1!==n.indexOf(e)))&&n.every((n=>tt(e[n],t[n])))}function nt(e){const t=e?new Date(e):new Date;return`${t.getDate()}:${t.getMonth()+1}:${t.getFullYear()}:${t.getHours()}:${t.getMinutes()}:`+t.getSeconds()}const it=e=>{if(e){const t=e.replace("?","").split("&"),n={};return t.forEach((e=>{e=(t=e.split("="))[0];var t=decodeURIComponent(t[1]||"");n[e]?"[object Array]"===Object.prototype.toString.call(n[e])?n[e].push(t):n[e]=[n[e],t]:n[e]=t})),JSON.parse(JSON.stringify(n))}return{}},at=e=>{var t,n,i=Fe.get(r.WEB_SETTINGS);null!=i&&i.configs.isWebPersonalisationModuleEnabled&&null!==(t=window.MoeWebP)&&void 0!==t&&t.clearLastFetchedTime(!0),e&&null!==(n=window.MoeWebP)&&void 0!==n&&n.getLiveExperiences()},rt=(e,t)=>{if(!t)return e;"?"!==e[e.length-1]&&(e+="?");for(const n in t)t.hasOwnProperty(n)&&null!=t[n]&&(e+=n+"="+encodeURIComponent(t[n])+"&");return"&"===e[e.length-1]?e.slice(0,-1):e},ot=e=>{let t;try{t=JSON.stringify(e)}catch(e){return!1}return new Blob([t]).size/1024>195},st=e=>e===s||e===b;function lt(e){return`Event "${e}" can't get tracked as its size is more than 195 KB. Max permissible event size is 195 KB.`}class ct{static logData(e,t){return{log_type:e,sent_time:(new Date).toISOString(),lake_fields:t}}static setRemoteLogging(e){return this.isTrackingEnabled||(this.logLevel=null==e?void 0:e.configs.logLevel,this.isTrackingEnabled=e.configs.remoteLogTracking,this.isTrackingEnabled)}static log(e,t,n,i,...a){!this.isTrackingEnabled||e!==this.logLevel&&"verbose"!==this.logLevel||Xe().remoteLogs.addRemoteLogs(this.logData(e,{msg:n+[...a].toString(),file_name:t,trace:i}))}}let dt="color: white; background: #41AE55; border-radius: 5px;";class gt{static setLogLevel(e,t){var n=gt.baseLogTag+".setLogLevel";null==Te.get(a)&&Te.set(a,[]),null==e?gt.logLevel=0:e in[0,1,2]?0<(gt.logLevel=e)&&t&>.releaseAllLogs():gt.warn(0,n,"Value",e,"not supported for setDebugLevel(). Current log level is",gt.logLevel,". Debug level can only be [0, 1, 2]")}static setLogTabStyle(e){gt.tagLogStyle=gt.tagLogStyle.replace("#48beab",e)}static log(e,t,n,...i){e<=gt.logLevel?console.log("%c "+gt.logBrand+" %c %c info %c %c "+t+" ",dt,"","color: white; background: #18a0bf; border-radius: 5px;","",gt.tagLogStyle,n,...i):gt.cacheLog((()=>{gt.log(e,t,n,...i)}))}static remoteLogTracking(e,t,n,i,...a){ct.log(t,n,i,...a),this.log(e,n,i,...a)}static error(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||ct.log("error",t,n,...i),e<=gt.logLevel?console.error("%c "+gt.logBrand+" %c %c error %c %c "+t+" ",dt,"","color: white; background: #cc0a0a; border-radius: 5px;","",gt.tagLogStyle,n,...i.slice(0,-1)):gt.cacheLog((()=>{gt.error(e,t,n,...i,{isCached:!0})}))}static warn(e,t,n,...i){var a;null!==(a=i[i.length-1])&&void 0!==a&&a.isCached||ct.log("warning",t,n,...i),e<=gt.logLevel?console.warn("%c "+gt.logBrand+" %c %c warn %c %c "+t+" ",dt,"","color: white; background: #e8ab51; border-radius: 5px;","",gt.tagLogStyle,n,...i.slice(0,-1)):gt.cacheLog((()=>{gt.warn(e,t,n,...i,{isCached:!0})}))}static customLabel(e,t,n,...i){e<=gt.logLevel?console.log("%c "+gt.logBrand+" %c %c "+t+" %c %c "+n+" %c ",dt,"",gt.tagLogStyle,"","color: white; background: #a400ff; border-radius: 5px;","",...i):gt.cacheLog((()=>{gt.customLabel(e,t,n,...i)}))}static image(e,t){e<=gt.logLevel?console.log("%c+","font-size: 1px; padding: 20px 80px; line-height: 45px; background: url("+t+"); background-size: 160px 90px; color: transparent;"):gt.cacheLog((()=>{gt.image(e,t)}))}static releaseAllLogs(){var e=Te.get(a),t=e.length;const n=e;if(Te.set(a,[]),0{var r=JSON.stringify(_e(n,"postData",null));t=rt(t,_e(n,"queryParams",null));const o=new XMLHttpRequest;o.open(e,t,!0),ut.addRequestHeaders(o,_e(n,"headers",{})),o.onreadystatechange=()=>{4===o.readyState&&200===o.status||4===o.readyState&&410===o.status?i({status:o.status,responseText:o.responseText}):4===o.readyState&&200!==o.status&&a({code:o.status,reason:o.responseText})},o.send(r)}))}static addRequestHeaders(e,t){for(const n in t)t.hasOwnProperty(n)&&e.setRequestHeader(n,t[n]);return e}}($i=($i=ut=ut||{}).METHODS||($i.METHODS={})).GET="GET",$i.POST="POST";const pt=ut;class ht{constructor(){this.p=null,this.res=null,this.rej=null;try{this.p=new Promise(((e,t)=>{this.res=e,this.rej=t}))}catch(e){gt.error(1,"Utils.PromiseObject","Promises not supported")}}}var mt=n(877);class ft{initiateSessionAndSource(e){return new Promise(((t,n)=>{this.isSessionRunning()&&this.isCurrentSourceSameAsPreviousSource()||this.startNewSession(e),t(!0)}))}isSessionRunning(){return this.getSessionKey()&&!this.isSessionExpired()}isSessionExpired(){var e=this.getSessionExpiryTime(),t=Te.get("wasBrowserInactive");return!(!t&&null!==t)&&(this.isWindowActive()&&Te.set("wasBrowserInactive",!1),(new Date).getTime()>e)}isNonEventInteractive(e){return ft.NON_INTERACTIVE_EVENTS.includes(e.name)||0"moe_non_interactive"===e.key&&1===e.value)).length}getCurrentSource(){const e=it(window.location.search);let t="";const n={};if(Object.keys(e).includes("utm_source")){t="utm_",this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n[t]=e[t])}));const i={source_url:window.location.href};return e[t+"source"]&&(i.source=e[t+"source"]),e[t+"medium"]&&(i.medium=e[t+"medium"]),e[t+"term"]&&(i.term=e[t+"term"]),e[t+"campaign"]&&(i.campaign_name=e[t+"campaign"]),e[t+"content"]&&(i.content=e[t+"content"]),e.utm_id&&(i.campaign_id=e.utm_id),Object.keys(n).length&&(i.extra=n),i}}getActiveSource(){return this.getSavedSource()||this.getCurrentSource()}isSourceOrganic(){const e=it(window.location.search),t=Object.keys(e);let n=!1;return this.geCustomIdentifiersToTrack().forEach((t=>{e[t]&&(n=!0)})),!t.includes("utm_source")&&!t.includes("source")&&!n}setCurrentSource(e){const t=this.getSession()||{};t.currentSource=e,Fe.set(q,t)}removeCurrentSource(){const e=this.getSession();e&&(e.currentSource=void 0,Fe.set(q,e))}getSavedSource(){var e=_e(this.getSession(),"currentSource",void 0);if(e)return e}isCurrentSourceSameAsPreviousSource(){if(this.isSourceOrganic())return!0;const e=Object.assign({},this.getCurrentSource());delete e.source_url;const t=Object.assign({},this.getSavedSource());return delete t.source_url,tt(e,t)}getSessionKey(){return _e(this.getSession(),"sessionKey",null)}getSessionStartTime(){return _e(this.getSession(),"sessionStartTime",null)}getSessionExpiryTime(){return _e(this.getSession(),"sessionExpiryTime",null)}getSessionMaxTime(){return _e(this.getSession(),"sessionMaxTime",null)}getSession(){return Fe.get(q)}geCustomIdentifiersToTrack(){return _e(this.getSession(),"customIdentifiersToTrack",[])||[]}generateSessionKey(){return(0,mt.v4)()}startNewSession(e){this.removeCurrentSource();var t=this.getNumberOfSessions();t={sessionKey:this.generateSessionKey(),sessionStartTime:(new Date).toISOString(),sessionMaxTime:e.configs.sessionInactiveDuration,customIdentifiersToTrack:e.configs.sourceExtraParams,sessionExpiryTime:(new Date).getTime()+1e3*e.configs.sessionInactiveDuration,numberOfSessions:++t},Fe.set(q,t)}extendSession(){const e=this.getSession();e&&(e.sessionExpiryTime=(new Date).getTime()+1e3*e.sessionMaxTime,Fe.set(q,e))}handleBrowserInactivity(e){"hidden"===e&&Te.set("wasBrowserInactive",!0)}isWindowActive(){return!!Te.get("isWindowActive")}getNumberOfSessions(){return _e(Fe.get(q),"numberOfSessions")||0}}ft.NON_INTERACTIVE_EVENTS=[d,p,d,S];class vt{constructor(e,t,n){this.os="web",this.osPlatform=e.userAgent,this.isMobile=ze(),this.os=ze()?"mweb":"web",this.name=vt.getBrowserName(e.userAgent,t),this.isIncognito=n}static getInstance(){return e=this,i=function*(){if(null!=Te.get(t))return Te.get(t);var e=yield vt.isIncognito(window),n=new vt(navigator,document,e);return Te.set(t,n),(e=Fe.get(r.BROWSER_DETAILS))&&vt.isBrowserUpdated(e,n)||Fe.set(t,n),n},new(n=(n=void 0)||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}));var e,n,i}static isIncognito(e){const t=e.RequestFileSystem||e.webkitRequestFileSystem;return new Promise((n=>{t?t(e.TEMPORARY,100,(()=>{n(!1)}),(()=>{n(!0)})):n(!1)}))}static getBrowserName(e,t){return-1!==e.indexOf("MSIE")||1==t.documentMode?vt.BROWSER_NAMES.INTERNET_EXPLORER:-1bt(this,void 0,void 0,(function*(){let i=!0;e.key=Tt.getMorphedKey(e.key);let a=-1;for(let t=this.attributes.length-1;0<=t;t--)e.key===this.attributes[t].key&&(a=t);0<=a?(tt(this.attributes[a].value,e.value)&&(gt.log(2,t,"Duplicate attribute found: ",e),i=yield this.isAttibuteTrackingRequired(this.attributes[a].updated_at)),i&&(this.attributes[a].value=e.value,this.attributes[a].updated_at=(new Date).getTime())):(gt.log(2,t,"Adding attribute:",e),this.attributes.push(e)),this.save().then((()=>{n(i)}))}))))}isAttibuteTrackingRequired(e){return bt(this,void 0,void 0,(function*(){var t=yield nn.getWebSDKSettings();if(null===t.configs.userAttributeCacheTime)return!0;var n=(new Date).getTime()-e;return Math.round(n/1e3)>t.configs.userAttributeCacheTime}))}static getLocalUser(){const e=Tt.baseLogTag+".getLocalUser";return new Promise((t=>{var n;Fe.get(r.USER_DATA)?(gt.log(2,e,"Found user in localstorage"),n=Fe.get(r.USER_DATA),t(new Tt(n))):t(null)}))}static getCookieUser(){return new Promise((e=>{var t=Tt.baseLogTag+".getLocalUser";Be.get(r.USER_DATA)?(gt.log(2,t,"Found user in cookie"),t=Be.get(r.USER_DATA),e(new Tt(t))):e(null)}))}static getMigrationUser(){const e=Tt.baseLogTag+".getLocalUser";return new Promise((t=>{var n=localStorage.getItem(r.OLD_SDK.USER_DATA);if(n)try{var i=JSON.parse(n);if(i.is_new_sdk_migrated)t(null);else{const e=new Tt({deviceAdded:_e(i,"device_add",!1),deviceUuid:_e(i,"uuid",(0,mt.v4)())}),n=_e(i,"user_attrs",{});for(const t in n)n.hasOwnProperty(t)&&e.attributes.push(new Et(t,n[t]));var a=localStorage.getItem(r.OLD_SDK.PUSH_TOKEN);null!=a&&"NA"!==a&&"null"!==a&&(e.subscribedToOldSdk=!0),t(e)}}catch(n){gt.error(1,e,"Error getting the migration user. Resolving as a new user."),gt.error(1,e,n),t(null)}else t(null)}))}static getSync(){return Tt.instance}static get(){const e=Tt.baseLogTag+".get";return null!=_t||(_t=new Promise((t=>{St.getInstance().then((n=>{nn.getWebSDKSettings().then((n=>{var i=Tt.getLocalUser(),a=n.isDomainLevelStorage?Tt.getCookieUser():"resolved",o=Tt.getMigrationUser();Promise.all([i,a,o]).then((i=>{const a=i[0],o=i[1],s=i[2];i=()=>{var i;if(o&&"resolved"!==o)gt.log(1,e,"User resolved from cookie: ",o),o.save().then((e=>{t(e)}));else{gt.log(1,e,"Local user: ",a);const o=new Tt(a);n.isPushSubBilling&&(null!==(i=Fe.get(r.SUBSCRIPTION_DETAILS))&&void 0!==i&&i.token||function(e,t){const n=[A,P,...t];return 0n.includes(e.key))).length}(o.attributes,null==n?void 0:n.configs.subscriberBasedBillingAttributes)?(o.deviceAdded=!0,nn.trackDeviceAttributes()):o.deviceAdded=!1),o.save().then((e=>{t(e)}))}},s?s.save().then((n=>{var i=localStorage.getItem(r.OLD_SDK.USER_DATA);if(i){const e=JSON.parse(i);e.is_new_sdk_migrated=!0,localStorage.setItem(r.OLD_SDK.USER_DATA,JSON.stringify(e))}gt.log(1,e,"User resolved from older SDK: ",n),t(n)})):i()})).catch((t=>{gt.log(1,e,"Error in fetching/creating user",t)}))})).catch((t=>{gt.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}))}))),_t}static logout(){return new Promise((e=>{_t=null,this.instance=null,window.MoeWebP&&(window.MoeWebP.deviceUuid=null),e(!0)}))}save(){var e;Tt.baseLogTag,Tt.isAmpEnabled()&&(this.deviceUuid=Be.get("moe_uuid")),Fe.get("WEB_SETTINGS");var t=Fe.get(r.WEB_SETTINGS);return null!=t&&t.configs.isWebPersonalisationModuleEnabled&&null!==(e=window.MoeWebP)&&void 0!==e&&e.deviceUuid&&this.deviceUuid!==window.MoeWebP.deviceUuid&&(this.deviceUuid=window.MoeWebP.deviceUuid),Tt.instance=this,new Promise((e=>{Fe.set(r.USER_DATA,this),Be.setRaw(Z,Tt.instance.deviceUuid),e(this)}))}static isAmpEnabled(){const e=Be.get(Z);return e&&e.includes("amp")}getAttribute(e){let t=null;return e=Tt.getMorphedKey(e),this.attributes.map((n=>{n.key===e&&(t=n.value)})),t}indexOfAttribute(e){let t=-1;return e=Tt.getMorphedKey(e),this.attributes.map(((n,i)=>{n.key===e&&(t=i)})),t}static getMorphedKey(e){switch(e){case"id":e=w;break;case"email":e=A;break;case"name":e=C;break;case"first_name":e=O;break;case"last_name":e=D;break;case"mobile":e=P;break;case"gender":e=R;break;case"birthday":e=N}return e}}Tt.baseLogTag="UserModel",Tt.isResolved=!1,Tt.instance=null;class It{constructor(){var e=It.baseLogTag+".constructor";const t=void 0;let n=Tt.getSync().getAttribute("id");n=n?n.toString():void 0;const i=window.analytics;let a,r;if(i){r=i._VERSIONS;try{a=i.user().anonymousId()}catch(t){gt.error(1,e,"Error getting anonymous id from segment api",t)}}this.c=void 0,this.h="",this.identifiers=void 0,(n||a)&&(this.identifiers={moe_user_id:n,segment_id:a}),this.meta={bid:(0,mt.v4)(),segmentSdkData:i?r:void 0}}}It.baseLogTag="ReportPostData";class wt{constructor(e,t,n){wt.baseLogTag,this.type=e,this.getParams=t,this.event=n,this.postData=new It;const i={},a={};for(const e of n.attributes)if(e&&null!=e.key&&(this.status=wt.STATUS.VALID,null!=e.value))if("function"==typeof e.value.getMonth){const t={};t[e.key]=Math.round(e.value.getTime()-6e4*e.value.getTimezoneOffset()),null==a.timestamp&&(a.timestamp=[]),a.timestamp.push(t)}else i[e.key]=e.value;this.postData.e=n.name,this.postData.a=i,this.postData.c=We(a)?void 0:a,window&&window.location&&null!=window.location.href&&(this.postData.url=window.location.href)}}wt.baseLogTag="ReportClass",(yt=($i=wt=wt||{}).STATUS||($i.STATUS={}))[yt.INVALID=0]="INVALID",yt[yt.VALID=1]="VALID",($i=$i.REPORT_ADD_TYPE||($i.REPORT_ADD_TYPE={}))[$i.USER_ATTRIBUTE=0]="USER_ATTRIBUTE",$i[$i.EVENT=1]="EVENT";const At=wt;function Ct(e,t){return!xe.get().disableWebPush&&"https"===e.platformSettings.chrome.domainType&&0<=Ee.indexOf(t.name)&&navigator.serviceWorker&&"PushManager"in window&&"Notification"in window}function Ot(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}function Dt(e,t){return`\n
\n ${e}\n ${!t&&'\n \n Powered by \n '}\n
\n `}const Pt=class{constructor(e){this.isBeaconDisabled=this.parseSentryBooleanFlag(_e(e,"b_d",!1)),this.isCardsModuleEnabled=this.parseSentryBooleanFlag(_e(e,"c_s",!1)),this.isWebPersonalisationModuleEnabled=this.parseSentryBooleanFlag(_e(e,"c_w_p_e",!1)),this.eventBatchCount=_e(e,"e_b_c",15),this.logLevel=_e(e,"log_level"),this.periodicFlushTime=_e(e,"p_f_t",30),this.isBatchingEnabled=this.parseSentryBooleanFlag(_e(e,"s_e_b_e",!1)),this.sessionInactiveDuration=_e(e,"s_i_d",1800),this.isRemoteLoggingEnabled=this.parseSentryBooleanFlag(_e(e,"s_log",!1)),this.sourceExtraParams=_e(e,"src_ext",[]),this.whitelistedEvents=_e(e,"w_e",[]),this.blacklistedEvents=_e(e,"b_e",[]),this.isAppActive=this.parseSentryBooleanFlag(_e(e,"a_s",!0)),this.remoteLogTracking=this.isRemoteLoggingEnabled&&!!this.logLevel,this.subscriberBasedBillingAttributes=_e(e,"s_b_a",[]),this.isMultiIdEnabled=this.parseSentryBooleanFlag(_e(e,"m_i_e",!1)),this.userAttributeCacheTime=_e(e,"u_a_c_t",43200)}parseSentryBooleanFlag(e="blocked"){return"allowed"===e||!0===e||"true"===e}};class Rt{constructor(){this.settingsVersion="V1",this.isDomainLevelStorage=!1,this.isConfigured=!1,this.isPushSubBilling=!1,this.isWebPushEnabled=!1,this.platformSettings=new xt,this.optInConfig=new Nt,this.configs=new Pt({})}static parseOldSettings(e){const t=Rt.baseLogTag+".parseOldSettings",n=new Rt;if((n.oldWebData=e).webData&&!We(e.webData))if(n.isConfigured=!0,e=e.webData,n.configs=new Pt(e),n.settingsVersion=_e(e,"wp_settings_version","V1"),"V2"===n.settingsVersion)n.isDomainLevelStorage=_e(e,"domain_level_storage",!1),n.isPushSubBilling=_e(e,"sub_billing",!1),_e(e,"is_enabled",!1)?(n.isWebPushEnabled=!0,n.platformSettings.chrome.domainType="https"):(n.isWebPushEnabled=!1,n.platformSettings.chrome.domainType="na"),n.platformSettings.chrome.subscriptionMode=_e(e,"web_push_platform_data.chrome.subscription_mode","vapid"),n.platformSettings.chrome.vapidPublicKey=_e(e,"web_push_platform_data.chrome.vapid_public_key",null),n.platformSettings.firefox.subscriptionMode=_e(e,"web_push_platform_data.firefox.subscription_mode","vapid"),n.platformSettings.firefox.vapidPublicKey=_e(e,"web_push_platform_data.firefox.vapid_public_key",null),n.optInConfig.reappearTime=_e(e,"prompt_again",24),n.optInConfig.type={"1-step":"ONE_CLICK","2-step":"TWO_STEP","self-handled":"SELF_HANDLED"}[_e(e,"opt_in_type","2-step")],n.optInConfig.showOverlay=_e(e,"show_overlay",!1),n.optInConfig.loadTime=_e(e,"load_time",0),n.optInConfig.type!==Nt.TYPE.SELF_HANDLED&&(i=e,a=n.optInConfig.type,r=n.optInConfig.showOverlay,new Promise(((e,t)=>{a===Nt.TYPE.ONE_CLICK&&r?e(function(e,t){return function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){let n="",i="";const a=yield St.getInstance();return n=a.isFirefox()?(i=Ot(`\n \n \n `,t),Dt(`\n \n \n `,t)):a.isOpera()?(i=Ot(`\n \n \n `,t),Dt(`\n \n \n `,t)):(i=Ot(`\n \n \n `,t),Dt(`\n \n \n `,t)),{mobileUI:n,webUI:i}}))}(_e(i,"overlay",null),_e(i,"hide_moe_branding",!1)).then((e=>e))):a===Nt.TYPE.TWO_STEP&&e(function(e,t){var{web:n,mobile:e}=e,n=`\n
\n
\n \n \n
\n
\n \n ${n.banner.title.text}\n \n

\n ${n.banner.body.text}\n

\n
\n ${t?"":``}\n
\n \n \n ${n.allow_button.text}\n \n
\n
\n \n \n `;return{mobileUI:`\n
\n
\n \n \n ${e.nudge.title.text}\n \n
\n
\n
\n \n \n
\n
${t?"":``}\n
\n `,webUI:n}}(_e(i,"opt_in_preview",null),_e(i,"hide_moe_branding",!1))),t("Its 1-step without overlay, so not constructing it.")})).then((e=>{n.optInConfig.softAskConfig.desktop.customHTML=e.webUI,n.optInConfig.softAskConfig.mobile.customHTML=e.mobileUI})).catch((e=>{gt.error(2,t,"Failed to construct overlay for hard ask: ",e)})));else{"false"===_e(e,"domain_level_storage",!1)?n.isDomainLevelStorage=!1:n.isDomainLevelStorage=!(!_e(e,"domain_level_storage",!1)&&"true"!==_e(e,"domain_level_storage",!1));let i=_e(e,"PushSubBilling",!1);"false"===i?i=!1:"true"===i&&(i=!0),(e=>"boolean"==typeof e)(i)||(i=!1),n.isPushSubBilling=i,n.platformSettings.chrome.domainType=_e(e,"webPushPlatformData.chrome.domain_type",""),n.platformSettings.chrome.subscriptionMode=_e(e,"webPushPlatformData.chrome.subscriptionMode","normal"),n.platformSettings.chrome.vapidPublicKey=_e(e,"webPushPlatformData.chrome.vapidPublicKey",null),n.platformSettings.firefox.enabled=!0,n.platformSettings.firefox.subscriptionMode=_e(e,"webPushPlatformData.firefox.subscriptionMode","normal"),n.platformSettings.firefox.vapidPublicKey=_e(e,"webPushPlatformData.firefox.vapidPublicKey",null),n.platformSettings.safari.websitePushId=_e(e,"webPushPlatformData.safari.websitePushId",null),null==n.platformSettings.safari.websitePushId?n.platformSettings.safari.enabled=!1:n.platformSettings.safari.enabled=!0,n.optInConfig.reappearTime=parseInt(_e(e,"promptAgain",24)),_e(e,"call_push_moengage",!0)?_e(e,"banner.banner_flag",null)?n.optInConfig.type=Nt.TYPE.TWO_STEP:n.optInConfig.type=Nt.TYPE.ONE_CLICK:(n.optInConfig.type=Nt.TYPE.SELF_HANDLED,n.optInConfig.reappearTime=0),n.optInConfig.showOverlay=_e(e,"show_overlay",!1),n.optInConfig.loadTime=_e(e,"load_time",0),n.optInConfig.softAskConfig.desktop.customHTML=_e(e,"bannerHtml.web",null),n.optInConfig.softAskConfig.mobile.customHTML=_e(e,"bannerHtml.mweb",null),xe.get().disableCookies&&(n.isDomainLevelStorage=!1,gt.warn(2,t,"Cookies Storage Been Disabled"))}else n.isConfigured=!1;var i,a,r;return n}}Rt.baseLogTag="SdkSettings";class Nt{constructor(){this.type=Nt.TYPE.NA,this.reappearTime=24,this.softAskConfig={desktop:new Lt,mobile:new Lt}}}class Lt{constructor(){this.customHTML=null}}($i=($i=Nt=Nt||{}).TYPE||($i.TYPE={})).NA="NA",$i.ONE_CLICK="ONE_CLICK",$i.TWO_STEP="TWO_STEP",$i.SELF_HANDLED="SELF_HANDLED";class kt{constructor(){this.enabled=!1,this.websitePushId=null}}class Mt{constructor(){this.enabled=!1,this.isServiceWorkerRoot=!0,this.serviceWorkerFilename="serviceworker.js",this.subscriptionMode="normal",this.vapidPublicKey=null,this.domainType=""}}($i=($i=Mt=Mt||{}).DOMAIN_TYPE||($i.DOMAIN_TYPE={})).NA="NA",$i.HTTPS="https",$i.MUTLI="multi";class xt{constructor(){this.safari=new kt,this.chrome=new Mt,this.firefox=new Mt}}const Bt=Rt;class Ut{static initialize(){return e=this,n=function*(){if(null==Ut.ready){Ut.offlineDataStore=be.createInstance({driver:[be.INDEXEDDB],name:ie,storeName:ae.NAME});const t=be.createInstance({driver:[be.INDEXEDDB],name:ie,storeName:"moe_data"}),n=be.createInstance({driver:[be.INDEXEDDB],name:ie,storeName:"moe_backup"});var e=[Ut.offlineDataStore.ready(),t.ready(),n.ready()];Ut.ready=Promise.all(e)}return yield Ut.ready},new(t=(t=void 0)||Promise)((function(i,a){function r(e){try{s(n.next(e))}catch(e){a(e)}}function o(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var n;e.done?i(e.value):((n=e.value)instanceof t?n:new t((function(e){e(n)}))).then(r,o)}s((n=n.apply(e,[])).next())}));var e,t,n}}class Ft{constructor(e){this.EVENT_ACTION=e.event.name,this.EVENT_ATTRS=e.event.attributes&&Wt(e.event.attributes),this.EVENT_G_TIME=(new Date).getTime().toString(),this.EVENT_L_TIME=nt(e.event.timestamp),this.EVENT_ATTRS_CUST=e.postData.c,this.N_I_E=e.postData.nie}}Ft.baseLogTag="ReportAddViewEvent";const Wt=e=>{const t={};return e.forEach((e=>{t[e.key]=e.value})),t};class Ht{static visibilityChange(){"hidden"===document.visibilityState&&(Ht.windowClosed||zt.reactToTriggerEvents())}static removeEventListeners(){document.removeEventListener("visibilitychange",Ht.visibilityChange,!1)}static addListeners(){document.addEventListener("visibilitychange",Ht.visibilityChange,!1)}}Ht.windowClosed=!1;const Gt=Ht;function Kt(e,t){try{var n=qe();return!(null==e||!e.configs.isBatchingEnabled||("web"!==n||t.name!==St.BROWSER_NAMES.CHROME&&t.name!==St.BROWSER_NAMES.EDGE&&t.name!==St.BROWSER_NAMES.OPERA)&&("mobile"!==n||St.isIOS()||t.name!==St.BROWSER_NAMES.CHROME&&t.name!==St.BROWSER_NAMES.OPERA)||!navigator.sendBeacon)}catch(e){gt.error(1,"Utils.batching.isBatchingSupported",e)}}class Vt{static getRemoteLogsBatchRequestOptions(e){return new Promise((t=>{nn.collectGetParams().then((n=>{n={query_params:Object.assign(Object.assign({},n),{unique_id:n.unique_id,os:"web"===n.os?"Web":"mWeb"}),logs:[...e]},t(n)}))}))}static sendBatchOfLogs(e){const t=nn.baseLogTag+".sendBatchOfLogs";return new Promise(((n,i)=>{Vt.getRemoteLogsBatchRequestOptions(e).then((i=>{var a=(a=xe.get()).baseDomainName+ue+i.query_params.os.toLowerCase()+"/"+a.appId;pt.post(a,{postData:i}).then((()=>{gt.log(1,t,"[sendBatchOfLogs] batch payload: "+JSON.stringify(e)),gt.log(1,t,"Batch Remote Logs sent to MoEngage successfully"),Vt.batchRemoteLogsApiRetries=1,n(!0)})).catch((n=>{gt.log(1,t,"Batch Remote Logs API failed",n),this.handleRemoteLogsFailure(e)}))}))}))}static handleRemoteLogsFailure(e){var t=nn.baseLogTag+".handleRemoteLogsFailure";gt.log(1,t,"Retry Batch Logs Failed API",Vt.batchRemoteLogsApiRetries),Vt.batchRemoteLogsApiRetries<3&&setTimeout((()=>{Vt.batchRemoteLogsApiRetries++,Vt.sendBatchOfLogs(e)}),3e3*Vt.batchRemoteLogsApiRetries)}static sendBeacon(e){Vt.getRemoteLogsBatchRequestOptions(e).then((e=>{var t=(t=xe.get()).baseDomainName+ue+e.query_params.os.toLowerCase()+"/"+t.appId+"?"+(new Date).getTime();gt.log(1,"RemoteLogsApi.sendBeacon","[sendBeacon] Remote Logs batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}}Vt.batchRemoteLogsApiRetries=1;var jt=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Yt{static updateEventStore(){qe()!==fe.TV&&be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:"moe_tracking",storeName:Q}).setItem(Q,Yt.reports)}static spliceReports(e=Yt.reports.length){return e=Yt.reports.splice(0,e),Yt.updateEventStore(),e}static spliceRemoteLogs(e=Yt.remoteLogs.length){return Yt.remoteLogs.splice(0,e)}static shouldCreateNewBatch(){return!Yt.lastbatchCreatedAt||(new Date).getTime()-Yt.lastbatchCreatedAt>=oe}static shouldCreateNewBatchForRemoteLogs(){return!Yt.lastRemoteLogsbatchCreatedAt||(new Date).getTime()-Yt.lastRemoteLogsbatchCreatedAt>=oe}static reactToTriggerEvents(){var e=Yt.baseLogTag+".reactToTriggerEvents";0jt(this,void 0,void 0,(function*(){(Yt.isOfflineBatchingSupported(t,e)||e.configs.remoteLogTracking)&&(yield Ut.initialize(),Yt.periodicSyncInterval&&Yt.clearInterval(),Yt.periodicSyncInterval=window.setInterval(Yt.periodicSync.bind(this,e.configs.periodicFlushTime),1e3*e.configs.periodicFlushTime),Gt.addListeners())}))))}static sendBatch(e){var t=Yt.baseLogTag+".sendBatch";try{nn.sendBatchOfReports(e).then((()=>{Yt.lastbatchCreatedAt=(new Date).getTime()}))}catch(e){gt.error(1,t,"Error in sending batch",e)}}static sendRemoteLogs(e){var t=Yt.baseLogTag+".sendRemoteLogs";try{Vt.sendBatchOfLogs(e).then((()=>{Yt.lastRemoteLogsbatchCreatedAt=(new Date).getTime()}))}catch(e){gt.error(1,t,"Error in sending batch of remote logs",e)}}static createBatch(e){0{t(e)})),_e(qt.topicListeners,e.topic,[]).map((t=>{t(e)}))}static broadcastToWindow(e){window&&window.dispatchEvent(new CustomEvent(e.topic,{detail:{name:e.name,data:e.data||null}}))}static deprecatedSdkCallback(e){window.dispatchEvent(new CustomEvent("MOE_OPT_IN",{detail:e}))}static resetAllListeners(){qt.listeners=[],qt.topicListeners={}}static resetListeners(){qt.listeners=[]}}qt.listeners=[],qt.topicListeners={};const $t=qt;class Jt{constructor(e,t,n=!0){this.name=e,this.attributes=t,this.timestamp=(new Date).getTime(),n&&this.attributes.push(new Et("URL",location.href))}static createUserAttributeEvent(e){return new Promise(((t,n)=>{const i=[],a=e.key;switch(e.key){case"id":e.key=w;break;case"email":e.key=A;break;case"name":e.key=C;break;case"first_name":e.key=O;break;case"last_name":e.key=D;break;case"mobile":e.key=P;break;case"gender":e.key=R;break;case"birthday":e.key=N}i.push(e),Tt.get().then((n=>{var r=n.indexOfAttribute("oldUniqueIds");e.key===w&&-1{Tt.get().then((a=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){try{var r=new Et("moe_logged_in_status",!!a.getAttribute("id"));const s=new ft;var o=new Et("moe_first_visit",s.getNumberOfSessions()<=1);t.push(r,o),i(new Jt(e,t,n))}catch(r){gt.error(1,"Event.createEvent","Error occurred in create events ",r)}}))))}))}}class Xt{static addEvent(e){Xt.history.push(e),Xt.listeners.forEach((t=>{t(e)}))}static getHistory(){return Xt.history}static addEventListener(e){Xt.listeners.push(e)}static clear(){Xt.history=[]}static clearListeners(){Xt.listeners=[]}}Xt.history=[],Xt.listeners=[];class Qt{static track(e,t,n){const i="MoEngage.event.trackEvent";return new Promise(((a,r)=>function(e,t,n,i){return new(n=n||Promise)((function(t,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(e){var i;e.done?t(e.value):((i=e.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(e,[])).next())}))}(this,0,void 0,(function*(){var r;let o;n=!!n;try{o=yield nn.getWebSDKSettings()}catch(r){return gt.error(1,i,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),void a(!1)}if("string"==typeof e&&e)if(o.configs.blacklistedEvents&&o.configs.blacklistedEvents.includes(e))gt.error(1,i,`This event "${e}" is blacklisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is blacklisted.`});else if(!ce.includes(e)||o.configs.whitelistedEvents&&o.configs.whitelistedEvents.includes(e))try{const s=[];if(null==t||null!==t&&t===Object(t)&&"[object Object]"===Object.prototype.toString.call(t)){for(const e in t=null==t?{}:t)t.hasOwnProperty(e)&&s.push(new Et(e,t[e]));const i=new ft;yield i.initiateSessionAndSource(o);const l=yield Jt.createEvent(e,s);Xt.addEvent(l),null!=o&&o.configs.isWebPersonalisationModuleEnabled&&null!==(r=window.MoeWebP)&&void 0!==r&&r.handleInSessionEvent(l),nn.collectGetParams().then((t=>{st(e)&&delete t.push_id;const r=new At(At.REPORT_ADD_TYPE.EVENT,t,l);var o={session_id:i.getSessionKey(),start_time:i.getSessionStartTime(),background_initiated:0};const s=[];(t=i.getActiveSource())&&(i.setCurrentSource(t),s.push(t)),r.postData.meta.session=o,s.length&&(r.postData.meta.source=s),i.isNonEventInteractive(l)&&(r.postData.nie=1),nn.reportAdd(r,n).then((()=>{i.isNonEventInteractive(l)||i.extendSession(),a(!0)}))}))}else gt.error(1,i,"Event attributes were not passed a key-value pair object for event: "+e),a({error:5002,message:"Event value needs to be a key-value pair object"})}catch(r){gt.error(1,i,"Error occurred in tracking events ",r)}else gt.error(1,i,`This event "${e}" has not been whitelisted. Please contact Moengage team to whitelist it.`),a({error:5001,message:`Event "${e}" is not whitelisted.`});else gt.error(1,i,"Event name not a string or null or empty string:",e),a({error:5001,message:"Event name can not be null"})}))))}}var Zt,en,tn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class nn{static deviceAdd(){return new Promise(((e,t)=>tn(this,void 0,void 0,(function*(){const n=xe.get();return nn.collectGetParams(pe).then((i=>{i={queryParams:i=Object.assign(Object.assign({},i),{url:window.location.href})},pt.post(n.baseDomainName+pe,i).then((()=>{Tt.get().then((e=>{e.deviceAdded=!0,e.save().then((()=>{on.startPeriodicClear(r.Q.REPORT),nn.onDeviceAdd.res()}))})).then((()=>{this.trackDeviceAttributes(),e(!0)}))})).catch((e=>{Ie.enqueue(r.Q.DEVICE,!0),t(!1)}))}))}))))}static trackDeviceAttributes(){const e=nn.baseLogTag+".trackDeviceAttributes";return new Promise(((t,n)=>tn(this,void 0,void 0,(function*(){try{let t=qe().toUpperCase();t="WEB"===t?"DESKTOP":t,Qt.track(E,{deviceType:t});let n=!1;St.getInstance().then((t=>{nn.getWebSDKSettings().then((i=>tn(this,void 0,void 0,(function*(){if(Ct(i,t)){let t=Fe.get(r.PUSH_TOKEN);if(!t)try{"granted"===(yield window.Moengage.device.getPermissionState())&&(t=!0)}catch(t){gt.error(2,e,"Failed to get push notification permission state.",t)}n=t}})))).then((()=>{Qt.track(E,{[ge]:!!n,source:"deviceAdd"}),Fe.set(r.OPTED_STATUS_TRACK_TIME,Date.now())}))}))}catch(t){gt.error(2,e,"Failed to track device attributes.",t)}t(null)}))))}static reportAdd(e,t){const n=nn.baseLogTag+".reportAdd";return new Promise(((i,a)=>(t=!!t,nn.getWebSDKSettings().then((o=>{o.isPushSubBilling?Tt.get().then((o=>{var s;o.deviceAdded?nn.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)})):(Ie.enqueue(r.Q.REPORT,e),gt.log(1,n,"Report added to queue as device not added yet:",e.event.name),gt.log(2,n,"Event Queued:",e.event.name),e.type===At.REPORT_ADD_TYPE.USER_ATTRIBUTE&&(s=e.event.attributes[0].key,o=null===(o=null===(o=this.sdkSettings)||void 0===o?void 0:o.configs)||void 0===o?void 0:o.subscriberBasedBillingAttributes,s===A||s===P||o.includes(s)?(gt.log(1,n,"Attribute accepted for push sub billing."),nn.deviceAdd()):gt.log(2,n,"Attribute NOT accepted for push sub billing.")),i(!0))})):nn.reportAddInternal(e,t).then((()=>{this.sendBroadcast(e),i(!0)})).catch((()=>{a(!1)}))})).catch((e=>{gt.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)})))))}static sendBroadcast(e){le.NAMES.includes(e.event.name)&&$t.broadcastToWindow({topic:le.TOPIC,name:e.event.name,data:e.event.attributes})}static getSegmentId(){const e=window.analytics;if(e&&e.user)return e.user().anonymousId()}static getBatchRequestOptions(e){return new Promise((t=>{nn.collectGetParams(re).then((n=>{var i=nn.getSegmentId()||"";const a=Tt.getSync(),r=new ft;var o={session_id:r.getSessionKey(),start_time:r.getSessionStartTime(),background_initiated:0};const s=[];var l=r.getActiveSource();l&&(r.setCurrentSource(l),s.push(l)),o={query_params:n,identifiers:{moe_user_id:a.getAttribute("id")||void 0,segment_id:i||void 0},meta:{bid:(0,mt.v4)(),request_time:(new Date).toISOString(),session:o,source:s.length?s:void 0},viewsCount:e.length,viewsInfo:[...e]},t(o)}))}))}static addReportsToOfflineDB(e,t){return tn(this,void 0,void 0,(function*(){const n=nn.baseLogTag+".addReportsToOfflineDB";var i=yield nn.getBatchRequestOptions([]);yield Ut.offlineDataStore.setItem(t||"report_add_"+(new Date).getTime(),e),yield Ut.offlineDataStore.setItem("requestMetaData",i),yield Ut.offlineDataStore.setItem(t||"batch_"+(new Date).getTime(),Object.assign(Object.assign({},i),{viewsCount:e.length,viewsInfo:e})),navigator.serviceWorker&&navigator.serviceWorker.ready.then((e=>{e.sync?e.sync.register("moe_offline_data_sync").then((()=>{gt.log(2,n,"offline sync event registered")})).catch((e=>{gt.error(1,n,"Service worker sync error",e)})):gt.log(2,n,"Service worker sync unavailable")}))}))}static sendReportBeacon(e,t,n){var i=nn.baseLogTag+".sendReportBeacon";try{if(!e&&navigator.sendBeacon&&navigator.sendBeacon(t,new Blob([JSON.stringify(n)],{type:"text/plain;charset=UTF-8"})))return!0}catch(e){gt.error(2,i,"Failed to send Report call with Beacon:",e)}return!1}static sendBatchOfReports(e){const t=nn.baseLogTag+".sendBatchOfReports";return new Promise(((n,i)=>{nn.getBatchRequestOptions(e).then((a=>{var r=xe.get();const o=r.baseDomainName+re+r.appId;nn.getWebSDKSettings().then((i=>window.navigator.onLine?nn.sendReportBeacon(i.configs.isBeaconDisabled,o,a)?(gt.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),gt.log(1,t,"Batch sent to MoEngage successfully through beacon"),void n(!0)):void pt.post(o,{postData:a}).then((()=>{gt.log(1,t,"[sendBatchOfReports] batch payload: "+JSON.stringify(e)),gt.log(1,t,"Batch sent to MoEngage successfully"),n(!0)})).catch((a=>{gt.error(1,t,"Batch Report add API failed",a),n(this.sendToOfflineTracking(e,a,i))})):this.sendToOfflineTracking(e,Se,i))).catch((e=>{e!==Se&>.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),i(e)}))}))}))}static sendToOfflineTracking(e,t,n){const i=nn.baseLogTag+".sendToOfflineTracking";return new Promise(((a,r)=>{St.getInstance().then((o=>{zt.isOfflineBatchingSupported(o,n)?(gt.error(1,i,"Add Report API failed, adding reports to offline db. ",t),nn.addReportsToOfflineDB(e).then((()=>{gt.log(2,i,"Network offline: Batch added to offline db")})),a(!0)):(gt.warn(1,i,"Report not added to offline db. Offline tracking is supported only if batching is enabled. It is supported only on Chrome, Edge and Opera browsers on desktop web and Chrome and Opera browsers on Android web."),r(t))})).catch((()=>{r(t)}))}))}static reportAddInternal(e,t){const n=nn.baseLogTag+".reportAddInternal";return new Promise(((i,a)=>{nn.getWebSDKSettings().then((a=>{St.getInstance().then((o=>{if(t){const t=nn.getUpdatedPushDetails();for(const n in t)!t.hasOwnProperty(n)||st(e.event.name)&&"push_id"===n||(e.getParams[n]=t[n]);var s=$e();const n={queryParams:Object.assign(Object.assign({},e.getParams),s)};if(e.postData.nie){const t=Object.assign({},e);delete t.postData.meta.source,delete t.postData.meta.session,n.postData=t.postData}else n.postData=e.postData;s=xe.get().baseDomainName,s+=pe,pt.post(s,n).then((()=>{let t=qe().toUpperCase();t="WEB"===t?"DESKTOP":t,Qt.track(E,{deviceType:t}),i(nn.handleReportAddSuccess(e))})).catch((t=>{Kt(a,o)?Ie.enqueue(r.Q.DEVICE,e):nn.handleReportAddFailure(e,t)}))}else Kt(a,o)?(zt.addReport(e,a.configs.eventBatchCount)&&(gt.log(1,n,"Event batched successfully:",e.event),this.addEventsToIDB(e.event)),i(!0)):(s=new Ft(e),ot(s)?(gt.error(1,n,lt(s.EVENT_ACTION)),i(!1)):nn.sendBatchOfReports([s]).then((()=>{i(nn.handleReportAddSuccess(e))})).catch((t=>{nn.handleReportAddFailure(e,t)})))}))})).catch((e=>{gt.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),a(!1)}))}))}static handleReportAddSuccess(e){var t=nn.baseLogTag+".handleReportAddSuccess";return e.type===At.REPORT_ADD_TYPE.EVENT?(gt.log(1,t,"Event tracked successfully:",e.event),this.addEventsToIDB(e.event)):e.type===At.REPORT_ADD_TYPE.USER_ATTRIBUTE&>.log(1,t,"User attribute added successfully:",e.event.attributes),nn.addReportApiRetries=1,!0}static handleReportAddFailure(e,t){var n=nn.baseLogTag+".handleReportAddFailure";gt.error(1,n,"Add Report API failed",t),e.type===At.REPORT_ADD_TYPE.EVENT?gt.log(1,n,"Queueing unsuccessful event tracking:",e.event):e.type===At.REPORT_ADD_TYPE.USER_ATTRIBUTE&>.log(1,n,"Queueing unsuccessful user attribute add:",e.event.attributes),nn.addReportApiRetries<3&&setTimeout((()=>{nn.addReportApiRetries++,Ie.enqueue(r.Q.REPORT,e),on.startPeriodicClear(r.Q.REPORT)}),3e3*nn.addReportApiRetries)}static checkIfTokenValid(e){const t=xe.get().baseDomainName+he,n=xe.get();return new Promise((i=>{e?Tt.get().then((a=>{a={queryParams:{app_id:n.appId,unique_id:a.deviceUuid,push_id:e}},pt.post(t,a).then((e=>{200===e.status?i(!0):i(!1)})).catch((e=>{i(!1)}))})):i(!1)}))}static isAppBlocked(e){return!(!e||!1!==e.configs.isAppActive)}static getWebSDKSettings(){return new Promise(((e,t)=>{let n=xe.get();var i,a;null!=n&&null!=n.appId||(n=new xe(Fe.get(r.INIT_DATA))),nn.sdkSettings?nn.isAppBlocked(nn.sdkSettings)?t(!1):e(nn.sdkSettings):(i=(new Date).getTime(),null==(a=Fe.get(r.SETUP_TIME))||0{e(t)})).catch((e=>{t(!1)})):Fe.get(r.WEB_SETTINGS)?(nn.sdkSettings=Fe.get(r.WEB_SETTINGS),nn.isAppBlocked(nn.sdkSettings)?t(!1):e(nn.sdkSettings)):nn.getAndPersistWebSettings(n).then((t=>{e(t)})).catch((e=>{t(!1)})))}))}static getAndPersistWebSettings(e){const t=nn.baseLogTag+".getAndPersistWebSettings";return new Promise(((n,i)=>tn(this,void 0,void 0,(function*(){try{var a={queryParams:{app_id:(e=null==e.appId?new xe(Fe.get(r.INIT_DATA)):e).appId}};gt.log(1,t,"Fetching latest web sdk settings for",e.appId);var o=yield pt.get(e.baseDomainName+"v2/websdksettings",a);gt.log(1,t,"Fetching config settings for",e.appId);let h=o.responseText;"string"==typeof h&&(h=JSON.parse(h));var s=ze()?"mweb":"web",l=e.baseDomainName+$+s+"/"+e.appId;try{var c,d=Fe.get(r.USER_DATA),g={postData:{query_params:{unique_id:d&&d.deviceUuid}}},u=yield pt.post(l,g);gt.log(1,t,"Fetched latest web and config settings"),200===u.status&&(c=u.responseText,c=JSON.parse(c),h.webData=Object.assign(Object.assign({},h.webData),c))}catch(e){gt.error(1,t,"Config API failed")}var p=(new Date).getTime();if(h=Bt.parseOldSettings(h),Fe.set(r.WEB_SETTINGS,h),Fe.set(r.SETUP_TIME,p),nn.isAppBlocked(h))return void i(!1);nn.sdkSettings=h,n(h)}catch(a){gt.error(1,t,"Settings APi Failed: ",a),nn.webSdkApiRetries<3?setTimeout((()=>{nn.webSdkApiRetries++,n(nn.getAndPersistWebSettings(e))}),3e3*nn.webSdkApiRetries):i(!1)}}))))}static collectGetParams(e){return new Promise(((t,n)=>{Tt.get().then((n=>{let i=xe.get();null!=i&&null!=i.appId||(i=new xe(Fe.get(r.INIT_DATA)));const a=new Date,o=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds());St.getInstance().then((a=>{var s,l=$e(e,[me,pe,re]);const c=Object.assign({os:a.os,os_platform:a.osPlatform,is_incognito:a.isIncognito,app_id:i.appId,os_ver:a.name,sdk_ver:"2.50.0",model:a.name,app_ver:"1.0",device_ts:Number(o),device_tz_offset:(-6e4*(new Date).getTimezoneOffset()).toString(),unique_id:n.deviceUuid,device_tz:(new Date).getTimezoneOffset().toString()},l);l=n.getAttribute("cart_token"),je()&&l&&null!==(s=this.sdkSettings)&&void 0!==s&&s.configs.isMultiIdEnabled&&e!==pe&&(c.cart_token=l),null!=(l=Fe.get(r.PUSH_TOKEN))&&"NA"!==l&&""!==l&&"null"!==l&&(c.push_id=l),a.isWebPushCompatible()&&(Ke(this.sdkSettings.platformSettings,a)?(c.subscription_type="vapid",c.vapid_public=Ve(this.sdkSettings.platformSettings,a)):c.subscription_type="normal"),null!=i.environment&&(c.environment=i.environment),a.name===St.BROWSER_NAMES.SAFARI&&(c.websitePushId=this.sdkSettings.platformSettings.safari.websitePushId);var d=Fe.get(r.SUBSCRIPTION_DETAILS);if(null!=d&&null!=d.keys){for(const e in d.keys)c["keys_"+e]=encodeURI(d.keys[e]);null!=d.endpoint&&(c.endpoint=encodeURI(d.endpoint)),c.expirationTime=d.expirationTime}t(c)}))}))}))}static getUpdatedPushDetails(){const e={};var t=Fe.get(r.SUBSCRIPTION_DETAILS);if(null!=t){var n=Fe.get(r.PUSH_TOKEN);if(null!=n&&"NA"!==n&&""!==n&&"null"!==n&&(e.push_id=n),t.keys){for(const n in t.keys)e["keys_"+n]=encodeURI(t.keys[n]);null!=t.endpoint&&(e.endpoint=encodeURI(t.endpoint)),e.expirationTime=t.expirationTime}}return e}static sendBeacon(e){if(!window.navigator.onLine)return this.sendToOfflineTracking(e,Se);nn.getBatchRequestOptions(e).then((e=>{var t=(t=xe.get()).baseDomainName+re+t.appId+"?"+(new Date).getTime();gt.log(1,"MoeApi.sendBeacon","[sendBeacon] batch payload: "+JSON.stringify(e)),navigator.sendBeacon(t,JSON.stringify(e))}))}static addEventsToIDB(e){if(qe()!==fe.TV){const t=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:J,storeName:X});null!=t&&t.setItem(e.name,e)}}}nn.baseLogTag="MoeApi",nn.onDeviceAdd=new ht,nn.webSdkApiRetries=1,nn.offlineEvents=[],nn.addReportApiRetries=1;const an=n(967),rn=r.Q;class on{static clear(e){var t=on.baseLogTag+".clear";const n=[];for(;!Ie.isEmpty(e);)switch(e){case rn.REPORT:const i=Ie.dequeue(rn.REPORT);n.push((e=>{nn.reportAdd(i).then((()=>{e()}))}));break;case rn.DEVICE:Ie.dequeue(rn.DEVICE)&&n.push((e=>{nn.deviceAdd().then((()=>{e()}))}));break;default:gt.error(1,t,"Do not know how to handle queue with name:",e)}setTimeout((()=>{on.processing[e]=!0,an(n,5,((t,n)=>{on.processing[e]=!1}))}),0)}static startPeriodicClear(e){const t=on.baseLogTag+".startPeriodicCleanQ";on.clearInterval(e);var n=()=>{Ie.isEmpty(e)?(gt.log(1,t,"If you see multiple event tracks with same, they were captured over multiple visits or page refreshes."),_e(on.processing,e,!1)||on.clearInterval(e)):(on.clear(e),gt.log(1,t,"Starting periodic queue clear for",e))};n(),on.intervals[e]=setInterval(n,6e3)}static clearInterval(e){null!=on.intervals[e]&&(clearInterval(on.intervals[e]),on.intervals[e]=null)}}on.baseLogTag="QManager",on.intervals={},on.processing={},($i=Zt=Zt||{}).PROMPT="prompt",$i.GRANTED="granted",$i.DENIED="denied",$i.DISMISSED="dismissed";class sn{static addCallback(e,t){null!=e&&null!=t&&(null==sn.callbacks[e]&&(sn.callbacks[e]=[]),sn.callbacks[e].push(t))}static getCallbacks(e){return sn.callbacks[e]||[]}static runCallbacks(e){sn.getCallbacks(e).forEach((e=>{e()}))}}sn.callbacks={};class ln{constructor(e){this.swRegisterPromise=null,this.swActiveRetries=1;const t=ln.baseLogTag+".constructor";this.sdkSettings=e,this.registerServiceWorker().then((e=>{this.sendDataToServiceWorker()})).catch((e=>{gt.error(1,t,"Error registering serviceworker:",e)}))}showHardAsk(){const e=ln.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{ln.isWebPushSupported().then((i=>{i?this.getCurrentPermissionState().then((i=>{this.registerServiceWorker().then((a=>{i!==Zt.DENIED?(gt.remoteLogTracking(1,"info",e,"Attempting to open hard ask"),Qt.track(v),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_ATTEMPTED}),this.showOverlay(),this.askPermission().then((n=>{this.hideOverlay(),gt.remoteLogTracking(2,"info",e,"Permission state after hard ask:",n),n===Zt.GRANTED?this.getPushTokenDetails().then((e=>{this.sendDataToServiceWorker(e.token),t({state:n,subscriptionDetails:e})})):(this.sendDataToServiceWorker(),t({state:n,subscriptionDetails:null}))})).catch((t=>{gt.error(1,e,t),n(W)}))):(gt.remoteLogTracking(1,"info",e,"Hard ask not shown as permission state is",i),t({state:i,subscriptionDetails:null}))})).catch((t=>{gt.error(1,e,"Error registering serviceworker:",t),n(t)}))})).catch((t=>{gt.error(1,e,"Registering service worker failed:",t),n(W)})):(gt.warn(1,e,"Web push not supported in current browser environment"),n(F))}))}))}sendDataToServiceWorker(e){return new Promise((t=>{nn.collectGetParams().then((t=>{var n;e&&(t.push_id=e||Fe.get(r.PUSH_TOKEN)||void 0),t.isBatchingEnabled=Fe.get(r.WEB_SETTINGS).configs.isBatchingEnabled,je()||null!==(n=xe.get())&&void 0!==n&&n.swScope?be.createInstance({driver:[be.INDEXEDDB],name:"moe_database",storeName:"moe_data"}).setItem("reportParams",{data:t}):navigator.serviceWorker.ready.then((()=>{this.sendDataToServiceWorkerOnControllerReady(t)}))}))}))}sendDataToServiceWorkerOnControllerReady(e){if(navigator.serviceWorker.controller){if("chrome-extension:"===window.location.protocol)return chrome.runtime.sendMessage({data:e});navigator.serviceWorker.controller.postMessage({data:e})}else this.swActiveRetries<3&&setTimeout((()=>{this.swActiveRetries++,this.sendDataToServiceWorkerOnControllerReady(e)}),500)}getCurrentPermissionState(){return St.getInstance().then((e=>navigator.permissions&&!e.isSafari()?navigator.permissions.query({name:"notifications"}).then((e=>ln.parsePermissionState(e.state))).catch((e=>{})):new Promise((t=>{var n;let i=null===(n=window.Notification)||void 0===n?void 0:n.permission;e.isSafari()&&"default"===i&&(i="prompt",Fe.get(de)&&(i="denied")),t(ln.parsePermissionState(i))}))))}getPushTokenDetails(){const e=ln.baseLogTag+".getPushTokenDetails";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((n=>{St.getInstance().then((i=>{n!==Zt.GRANTED?t({token:null,raw:null}):this.registerServiceWorker().then((n=>{let a=null;const r={userVisibleOnly:!0};Ke(this.sdkSettings.platformSettings,i)&&(a=Ve(this.sdkSettings.platformSettings,i),r.applicationServerKey=He(a));const o=()=>{n.pushManager.subscribe(r).then((e=>{(e=>{const n=e.toJSON();var a=e.endpoint.substring(0,n.endpoint.lastIndexOf("/")+1);e=n.expirationTime;let r=n.endpoint.split("/")[n.endpoint.split("/").length-1];i.isEdge()&&(r=r.replace("?token=",""));const o={};if(n.keys)for(const e in n.keys)n.keys.hasOwnProperty(e)&&(o[e]=n.keys[e]);t({token:r,endpoint:a,keys:o,expirationTime:e,raw:n})})(e)})).catch((n=>{gt.error(1,e,"Error in subscribtion: ",n),t({token:null,raw:null})}))};n.pushManager.getSubscription().then((e=>{if(e)if("vapid"===this.sdkSettings.platformSettings.chrome.subscriptionMode&&e.options&&e.options.applicationServerKey){var t=Ge(e.options.applicationServerKey);[a,a+"=",a+"==",Ge(He(a))].indexOf(t)<0?e.unsubscribe().then((()=>{o()})):o()}else o();else o()}))})).catch((n=>{gt.error(1,e,"Error in getting push token: ",n),t({token:null,raw:null})}))}))}))}))}removeToken(){return Fe.remove(r.PUSH_TOKEN),Fe.remove(r.OPTED_STATUS_TRACK_TIME),Fe.remove(r.SUBSCRIPTION_DETAILS),Promise.resolve()}askPermission(){return new Promise(((e,t)=>{var n;null!==(n=window.Notification)&&void 0!==n&&n.requestPermission().then((t=>{Fe.set(r.OPT_IN_SHOWN_TIME,Date.now()),Qt.track(p),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_SHOWN}),$t.deprecatedSdkCallback("opt_in_shown"),sn.runCallbacks(U.HARD_ASK_SHOWN),e(ln.parsePermissionState(t))})).catch((e=>{t(G)}))}))}registerServiceWorker(){const e=ln.baseLogTag+".registerServiceWorker";return"chrome-extension:"===window.location.protocol?navigator.serviceWorker.ready:(null!=this.swRegisterPromise||(this.swRegisterPromise=new Promise(((t,n)=>{if(ln.registeredServiceWorker)t(ln.registeredServiceWorker);else if("serviceWorker"in navigator){let i="serviceworker.js",a=!1;if(xe.get()&&null!=xe.get().swPath&&(i=xe.get().swPath,a=!0),"/"===i[0]||i.startsWith("http")||(i="/"+i),je())gt.log(1,e,"Removing scope in case of shopify."),this.registerScopedSW(i,/moengage/,t,n);else{let r="/";xe.get()&&null!=xe.get().swScope?(r=xe.get().swScope,this.registerScopedSW(i,r,t,n)):(a&&(gt.log(1,e,"Using user defined path to serviceworker:",i),r=i.substr(0,i.lastIndexOf("/")+1),ln.canSwBeRegisteredWithScope(r)||(gt.error(1,e,"Service worker can only be registered from same directory or child directory."),n(K))),navigator.serviceWorker.register(i,{scope:r}).then((i=>{gt.log(2,e,"Serviceworker registered"),navigator.serviceWorker.ready.then((n=>{gt.log(2,e,"Serviceworker ready"),ln.registeredServiceWorker=n,xe.get()&&xe.get().forceSwUpdate&&n.update(),t(n)})).catch((t=>{gt.error(1,e,"Service worker register failed:",t),n(W)}))})).catch((t=>{gt.error(1,e,"Service worker register failed:",t),n(W)}))),gt.log(1,e,"Scope for serviceworker:",r)}}else gt.error(1,e,"Service worker not supported"),n("Service worker not supported")}))),this.swRegisterPromise)}registerScopedSW(e,t,n,i){const a=ln.baseLogTag+".registerScopedSW";navigator.serviceWorker.register(e).then((e=>{gt.log(2,a,"Serviceworker registered"),navigator.serviceWorker.getRegistrations().then((e=>{e.forEach((e=>{setTimeout((()=>{e.active&&e.active.scriptURL.match(t)&&(gt.log(2,a,"Serviceworker ready"),ln.registeredServiceWorker=e,xe.get()&&xe.get().forceSwUpdate&&e.update(),n(e))}),100)}))})).catch((e=>{gt.error(1,a,"Service worker register failed:",e),i(W)}))})).catch((e=>{gt.error(1,a,"Service worker register failed:",e),i(W)}))}static canSwBeRegisteredWithScope(e){var t=window.location.pathname;return e=e,!((t=t).indexOf(e)<0)&&0<=t.substring(t.indexOf(e)).length}static isWebPushSupported(){return new Promise((e=>{St.getInstance().then((t=>{!t.isIncognito&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&t.isWebPushCompatible()?e(!0):e(!1)}))}))}static parsePermissionState(e){return"prompt"===e?Zt.PROMPT:"granted"===e?Zt.GRANTED:"denied"===e?Zt.DENIED:"default"===e?Zt.DISMISSED:null}showNotification(e){const t=ln.baseLogTag+".showNotification";this.registerServiceWorker().then((n=>{e?e.title?e.body?(null==e.requireInteraction&&(e.requireInteraction=!0),n.showNotification(e.title,e)):gt.error(1,t,"Notification body can not be blank"):gt.error(1,t,"Notification title can not be blank"):gt.error(1,t,"Notification object can not be blank")})).catch((e=>{gt.error(1,t,"Error registering serviceworker:",e)}))}showOverlay(){if(this.sdkSettings.optInConfig.showOverlay&&this.sdkSettings.optInConfig.type===Nt.TYPE.ONE_CLICK){const e=document.createElement("div");e.id="moe-push-div",e.style.display="none",e.className="moe-push-class",St.getInstance().then((t=>{t.isMobile?e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.mobile.customHTML:e.innerHTML=this.sdkSettings.optInConfig.softAskConfig.desktop.customHTML;const n=document.body.firstChild;let i;if(n.parentNode.insertBefore(e,n),(t=t.name)===St.BROWSER_NAMES.CHROME||t===St.BROWSER_NAMES.OPERA_NEON?i=document.getElementsByClassName("moe_chrome"):t===St.BROWSER_NAMES.FIREFOX?i=document.getElementsByClassName("moe_firefox"):t!==St.BROWSER_NAMES.OPERA&&t!==St.BROWSER_NAMES.SAFARI||(i=document.getElementsByClassName("moe_opera")),0===i.length)document.getElementById("moe-push-div").style.display="none";else for(let e=i.length-1;0<=e;e--)i[e].style.display="block";this.overlayTimer=window.setTimeout((()=>{""===e.style.opacity&&(e.style.display="block")}),1500),e.onclick=()=>{this.hideOverlay()}}))}}hideOverlay(){clearTimeout(this.overlayTimer);const e=document.getElementById("moe-push-div");null!=e&&(e.style.visibility="none",e.style.opacity="0",e.parentNode.removeChild(e))}}ln.baseLogTag="HTTPS-NotificationManager";const cn="Web push settings not configured on MoEngage dashboard: "+z;class dn{constructor(e,t){this.currentManager=null;var n=dn.baseLogTag+".constructor";this.config=e,this.browser=t,this.browser.isWebPushCompatible()?e.platformSettings.chrome&&("https"===e.platformSettings.chrome.domainType?"https"===function(){if(window)return"localhost"===window.location.hostname?"https":"http:"===window.location.protocol?"http":"https:"===window.location.protocol||"chrome-extension:"===window.location.protocol?"https":void 0}()?this.currentManager=new ln(e):gt.error(1,n,"Web Push does not work in http mode"):(je()&&new ln(e),gt.warn(1,n,"Web push settings not configured. Please configure at ",z))):this.browser.name===St.BROWSER_NAMES.SAFARI&&e.platformSettings.safari&&"safari"in window&&"pushNotification"in window.safari&&(this.currentManager=null,gt.warn(1,n,"Web push is only supported on Safari 16 and above."))}showHardAsk(){const e=dn.baseLogTag+".showHardAsk";return new Promise(((t,n)=>{this.getCurrentPermissionState().then((i=>{null!=this.currentManager?i===Zt.PROMPT?this.currentManager.showHardAsk().then((n=>{n.state===Zt.DISMISSED?(Qt.track(m),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_DISMISSED}),$t.deprecatedSdkCallback("opt_in_dismissed"),sn.runCallbacks(U.HARD_ASK_DISMISSED),gt.log(1,e,"Hard ask was dismissed")):n.state===Zt.GRANTED?(Qt.track(h),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_ALLOWED,data:n.subscriptionDetails}),$t.deprecatedSdkCallback("opt_in_allowed"),sn.runCallbacks(U.HARD_ASK_ALLOWED),gt.log(1,e,"Push permission was granted"),gt.customLabel(1,e,"token",n.subscriptionDetails.token)):n.state===Zt.DENIED&&(Qt.track(f),Qt.track("Web Push Opt-in Denied"),$t.broadcastToWindow({topic:x,name:U.HARD_ASK_DENIED}),$t.deprecatedSdkCallback("opt_in_blocked"),sn.runCallbacks(U.HARD_ASK_DENIED),gt.log(1,e,"Notification permission was denied")),t(n)})).catch((n=>{gt.error(1,e,"Error showing hard ask:",n),t({state:i,subscriptionDetails:null})})):(gt.log(1,e,"Not showing Hard Ask as current permission state is",i),this.getPushTokenDetails().then((n=>{gt.customLabel(1,e,"token",n.token),t({state:i,subscriptionDetails:n})})).catch((n=>{gt.warn(1,e,"Could not get push token details"),t({state:i,subscriptionDetails:null})}))):(gt.log(1,e,"MoEngage web push settings not configured. Please configure at",z),n(H))})).catch((e=>{n(e)}))}))}getCurrentPermissionState(){return null!=this.currentManager?this.currentManager.getCurrentPermissionState():Promise.reject(cn)}getPushTokenDetails(){return null!=this.currentManager?this.currentManager.getPushTokenDetails():Promise.reject(cn)}removeToken(){return null!=this.currentManager?this.currentManager.removeToken():Promise.reject(cn)}showNotification(e){var t=dn.baseLogTag+".showNotification";if(null!=this.currentManager)return this.currentManager.showNotification(e);gt.warn(1,t,cn)}}dn.baseLogTag="NotificationManager";class gn{constructor(e){this.mainDivs=[],this.config=e}showSoftAsk(){const e=gn.baseLogTag+".showSoftAsk";return new Promise(((t,n)=>{let i=this.config.optInConfig.loadTime;St.getInstance().then((n=>{(this.config.optInConfig.type===Nt.TYPE.SELF_HANDLED||n.isSafari()&&this.config.optInConfig.type===Nt.TYPE.ONE_CLICK)&&(i=0),i&>.log(1,e,"Delay of",i," second(s) requested before opt-in flow"),setTimeout((()=>{!n.isWebPushCompatible()||this.config.optInConfig.type!==Nt.TYPE.TWO_STEP&&this.config.optInConfig.type!==Nt.TYPE.SELF_HANDLED?(Fe.set(r.SOFT_ASK_STATUS,en.NOT_SHOWN),t({showHardAsk:!0,softAskState:en.NOT_SHOWN})):this.showOptIn((()=>{gt.log(1,e,"Soft ask was shown"),Fe.set(r.OPT_IN_SHOWN_TIME,Date.now()),Fe.set(r.SOFT_ASK_STATUS,en.SHOWN),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_SHOWN}),$t.deprecatedSdkCallback("soft_ask_shown"),sn.runCallbacks(U.SOFT_ASK_SHOWN)}),(()=>{Qt.track(u),this.hideOptIn(),gt.log(1,e,"Soft ask was allowed"),Fe.set(r.SOFT_ASK_STATUS,en.ALLOWED),t({showHardAsk:!0,softAskState:en.ALLOWED}),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_ALLOWED}),$t.deprecatedSdkCallback("soft_ask_allowed"),sn.runCallbacks(U.SOFT_ASK_ALLOWED)}),(()=>{this.hideOptIn(),Qt.track(g),gt.log(1,e,"Soft ask was dismissed"),Fe.set(r.SOFT_ASK_STATUS,en.DISMISSED),t({showHardAsk:!1,softAskState:en.DISMISSED}),$t.broadcastToWindow({topic:x,name:U.SOFT_ASK_DISMISSED}),$t.deprecatedSdkCallback("soft_ask_closed"),sn.runCallbacks(U.SOFT_ASK_DISMISSED)}),(e=>{e=!!e,this.hideOptIn(),t({showHardAsk:e,softAskState:en.NOT_SHOWN})}))}),1e3*i)}))}))}showOptIn(e,t,n,i){const a=gn.baseLogTag+".showOptIn";if(this.config.optInConfig.type===Nt.TYPE.TWO_STEP){let r=document.getElementById("moe-push-div");null==r&&(r=document.createElement("div"),r.id="moe-push-div",r.className="moe-push-class"),St.getInstance().then((o=>{let s=null;if(s=(o.isMobile?this.config.optInConfig.softAskConfig.mobile:this.config.optInConfig.softAskConfig.desktop).customHTML,null!=s){r.innerHTML=s;const o=document.body.firstChild;o.parentNode.insertBefore(r,o),this.moeDiv=r;const l=document.getElementById("optInText")||document.getElementById("optInTextConventional"),c=document.getElementById("moe-dontallow_button");null==l?(gt.error(1,a,"Error showing soft ask. Allow button id is missing"),i()):(e(),Qt.track(d),l.onclick=()=>{t()},c?c.onclick=()=>{n()}:window.moeRemoveBanner=()=>{n()})}else gt.error(1,a,"Error displaying soft ask"),i()}))}else if(this.config.optInConfig.type===Nt.TYPE.SELF_HANDLED){var r=xe.get();if(r.customSoftAsk){var o=document.getElementsByClassName(r.customSoftAsk.mainClass),s=document.getElementsByClassName(r.customSoftAsk.allowClass),l=document.getElementsByClassName(r.customSoftAsk.dismissClass);if(o.length<1)gt.error(1,a,"Could not find main class for the soft ask. Class name given:",r.customSoftAsk.mainClass),St.getInstance().then((e=>{e.isWebPushCompatible()&&(gt.warn(1,a,"Proceeding to hard ask directly"),i(!0))}));else{e(),s.length<1&&(gt.warn(1,a,"Could not find any element for allow button. Class name given:",r.customSoftAsk.allowClass),gt.warn(1,a,"Docs for self-handled opt in available here - ",Y.SELF_HANDLED_DOCS)),l.length<1&>.warn(1,a,"Could not find any element for dismiss button. Class name given:",r.customSoftAsk.dismissClass);for(let e=o.length-1;0<=e;e--){const t=o[e];this.mainDivs.push(t),t.style.display="block"}for(let e=s.length-1;0<=e;e--)s[e].onclick=()=>{t()};for(let e=l.length-1;0<=e;e--)l[e].onclick=()=>{n()}}}else St.getInstance().then((e=>{e.isWebPushCompatible()?(gt.warn(1,a,"No soft ask configured. Proceeding to hard ask directly. \n\nYou can ignore this message if you do not want any soft ask."),i(!0)):(gt.error(1,a,"Soft ask needs to be present in case of http implementation. Can not show hard ask otherwise."),i())}))}}hideOptIn(){null!=this.moeDiv&&(this.moeDiv.style.display="none"),0{e.style.display="none"}))}}gn.baseLogTag="SoftAskManager",($i=en=en||{}).SHOWN="shown",$i.NOT_SHOWN="not shown",$i.ALLOWED="allowed",$i.DISMISSED="dismissed";class un{constructor(e){this.deviceToLogout=_e(e,"deviceToLogout",null)}static get(){return new un(Fe.get(r.GRACEFUL_DATA))}save(){Fe.set(r.GRACEFUL_DATA,this)}}class pn{onWindowVisibilityChange(e){pn.baseLogTag,Te.set("isWindowActive",!0),document.addEventListener("focus",(()=>{t(!0)}),!1),document.addEventListener("blur",(()=>{t(!1)}),!1),window.addEventListener("focus",(()=>{t(!0)}),!1),window.addEventListener("blur",(()=>{"IFRAME"!==document.activeElement.tagName&&t(!1)}),!1);const t=e=>"boolean"==typeof e?n(e?"visible":"hidden"):document.hidden?n("hidden"):n("visible"),n=t=>{Te.set("isWindowActive","visible"===t),e(t)};window.addEventListener("visibilitychange",t,!1)}static beforeUnload(){pn.isBatchingEnabled&&(Gt.windowClosed=!0,zt.sendBeacon()),window.Moengage.onsite&&window.Moengage.onsite.sendDelayCampaignStats&&window.Moengage.onsite.sendDelayCampaignStats()}static removeBeforeUnloadListeners(){window.removeEventListener("beforeunload",pn.beforeUnload,!1)}static addBeforeUnloadListeners(e){e.configs.isBatchingEnabled&&(pn.isBatchingEnabled=!0),window.addEventListener("beforeunload",pn.beforeUnload,!1)}}pn.baseLogTag="WindowEventManager",pn.isBatchingEnabled=!1;var hn=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const mn="MoEngage.user";class fn{static addAttribute(e,t){const n=mn+".addUserAttribute";return new Promise(((i,a)=>{let r=!1;if("string"!=typeof e||null==e)gt.error(1,n,"Attribute name needs to be a string"),i({error:5e3,message:"Attribute name needs to be a string. Type provided was "+typeof e});else if(""===e)gt.error(1,n,"Attribute name can not be an empty string"),i({error:5001,message:"Attribute name can not be an empty string"});else if(null==t)gt.error(1,n,"Attribute value null"),i({error:5003,message:"Attribute value was empty"});else if("string"==typeof t&&""===t)gt.error(1,n,"Attribute value needs to be non-empty string or non-empty object"),i({error:5004,message:"Attribute value needs to be non-empty string or non-empty object"});else if(et(t)&&k.includes(e))gt.error(1,n,`Value of '${e}' attribute cannot be an object`),i({error:5002,message:"Attribute value cannot be an object"});else if("object"==typeof t&&Array.isArray(t)&&!t.length)gt.error(1,n,"Attribute value needs to be non-empty string or non-empty object"),i({error:5006,message:"Attribute value needs to be non-empty string or non-empty object"});else if(et(t)&&!Object.keys(t).length)gt.error(1,n,"Attribute value cannot be empty object"),i({error:5005,message:"Attribute value cannot be empty object"});else{const a=new Et(e,t),o=()=>{Tt.get().then((e=>{e.addAttribute(a).then((e=>{e?("id"===a.key&>.log(1,n,"Logging in the user with id: ",a.value),Jt.createUserAttributeEvent(a).then((e=>{gt.log(2,n,"Event to be converted to report:",e),Xt.addEvent(e),nn.collectGetParams().then((t=>{t=new At(At.REPORT_ADD_TYPE.USER_ATTRIBUTE,t,e),nn.reportAdd(t).then((()=>{r&&qi.onsite.refresh&&qi.onsite.refresh(),i(!0)}))}))}))):(gt.error(1,n,"Attribute already present/queued. Not adding again."),i({error:5005,message:"Attribute already present/queued. Not adding again."}))}))}))};"id"===e?(r=!0,Tt.get().then((e=>{var a=e.indexOfAttribute("id");-1{o()})))):(function(){const e=mn+".refreshCards";nn.getWebSDKSettings().then((t=>{null!=t&&t.configs.isCardsModuleEnabled&&qi.cards&&(gt.log(1,e,"Fetching new Cards after login"),qi.cards.refreshCards())})).catch((t=>{gt.error(2,e,"Error Refreshing Cards:",t)}))}(),at(!0),o())}))):o()}}))}static login(e){return fn.addAttribute("id",e)}static logout(e,t){const n=mn+".logout",i=e?{type:"forced",new_uid:t}:null;return function(){const e=un.get();null!=Tt.getSync()&&(e.deviceToLogout=Tt.getSync().deviceUuid,e.save())}(),new Promise((e=>{Qt.track(S,i).then((()=>hn(this,void 0,void 0,(function*(){gt.log(1,n,"Logging out now!"),yield zt.flushReports(),pn.removeBeforeUnloadListeners(),nn.getWebSDKSettings().then((t=>hn(this,void 0,void 0,(function*(){var n;t.isDomainLevelStorage&&Be.remove(r.USER_DATA),Xt.clear(),yield Qi(),yield function(){return Ki(this,void 0,void 0,(function*(){const e="Moengage.disableCards",t=xe.get();try{nn.getWebSDKSettings().then((e=>Ki(this,void 0,void 0,(function*(){var n;if(null!=e&&e.configs.isCardsModuleEnabled&&null!==(n=t.cards)&&void 0!==n&&n.enable){const e=yield Sn.loadModule(ne.CARDS);yield e.logout(),Yi=new ht}})))).catch((t=>{gt.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}catch(t){gt.error(1,e,"Error logging out from cards module:",t)}}))}(),at(),Fe.logout(),yield Tt.logout(),Fe.remove(r.GRACEFUL_DATA),nn.onDeviceAdd=new ht,yield ca(),t.configs.remoteLogTracking&&(n=xe.get(),yield nn.getAndPersistWebSettings(n)),e(!0)})))).catch((t=>{gt.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),e(!1)}))}))))}))}static updateUniqueId(e){const t=mn+".updateUniqueId";return new Promise((n=>{Tt.get().then((i=>{var a=i.indexOfAttribute(w),r=i.indexOfAttribute("oldUniqueIds");if(!(-1{fn.login(e).then((()=>{n(!0)}))}))):(gt.warn(1,t,"New id and old id are the same. Not updating the id."),n(!0))}))}))}static getAttributes(){const e=Tt.getSync().attributes,t={};return e.map((e=>{t[e.key]=e.value})),t}}class vn{constructor(e,t){this.notificationManager=null,this.softAskManager=null,vn.baseLogTag,this.sdkSettings=e,this.browser=t,this.softAskManager=new gn(this.sdkSettings),this.notificationManager=new dn(this.sdkSettings,t)}callWebPush(){const e=vn.baseLogTag+".callWebPush";Ct(this.sdkSettings,this.browser)&&this.notificationManager.getCurrentPermissionState().then((t=>{return n=this,a=function*(){var n=(n=t)=>{Tt.get().then((t=>{let i=!1;var a=t.getAttribute("email"),o=t.getAttribute("mobile");null===a&&null===o||(i=!0),t.deviceAdded=i,t.save().then((()=>{this.notificationManager.removeToken().then((()=>{Qt.track(E,{[ge]:!1}),Qt.track(b),n===Zt.DENIED?gt.log(1,e,"Not asking for permission as current state is denied."):(Fe.remove(r.OPT_IN_SHOWN_TIME),this.startPushSubscription())}))}))}))};const i=yield St.getInstance();var a=Fe.get(r.PUSH_TOKEN),o=t===Zt.DENIED&&!this.sdkSettings.isDomainLevelStorage;null==a&&t!==Zt.DENIED?this.startPushSubscription():null!=a&&(o||i.isSafari()&&t===Zt.PROMPT)?(gt.log(1,e,"User has removed the permission"),gt.image(1,V),i.isSafari()&&t===Zt.PROMPT&&(Fe.set(de,!0),t=Zt.DENIED),n(t)):o?gt.warn(1,e,"Not proceeding with push subscription as current state is denied"):null!=a&&t===Zt.GRANTED?this.browser.name===St.BROWSER_NAMES.CHROME?Ke(this.sdkSettings.platformSettings,this.browser)?this.startPushSubscription():gt.warn(1,e,"Subscription mode is not VAPID type. Cannot subscribe to web push."):(this.startPushSubscription(),this.notificationManager.getPushTokenDetails().then((t=>{gt.customLabel(1,e,"token",t.token)}))):this.sdkSettings.isDomainLevelStorage?"granted"===Be.get(r.HARD_ASK_STATUS)?(a=null===(a=Be.get(r.SUBSCRIPTION_DETAILS))||void 0===a?void 0:a.domain)&&a===window.location.origin?(gt.log(1,e,"It seems that the user has unsubscribed manually. Starting push subscription.."),n(t)):gt.log(1,e,"Not showing opt-in as user subscribed to sub-domain"):this.startPushSubscription():n()},new(i=(i=void 0)||Promise)((function(e,t){function r(e){try{s(a.next(e))}catch(e){t(e)}}function o(e){try{s(a.throw(e))}catch(e){t(e)}}function s(t){var n;t.done?e(t.value):((n=t.value)instanceof i?n:new i((function(e){e(n)}))).then(r,o)}s((a=a.apply(n,[])).next())}));var n,i,a})).catch((t=>{gt.error(1,e,"Error in getting current state:",t)}))}startPushSubscription(){const e=vn.baseLogTag+".startPushSubscription",t=()=>{Fe.set(r.HARD_ASK_STATUS,Zt.PROMPT);const t=Fe.get(r.PUSH_TOKEN);this.notificationManager.showHardAsk().then((n=>{Fe.set(r.HARD_ASK_STATUS,n.state),n.state===Zt.GRANTED?null!=n.subscriptionDetails.token?(Fe.set(r.PUSH_TOKEN,n.subscriptionDetails.token),n.subscriptionDetails.domain=window.location.origin,Fe.set(r.SUBSCRIPTION_DETAILS,n.subscriptionDetails),n.subscriptionDetails.token&&t!==n.subscriptionDetails.token&&nn.deviceAdd().then((()=>{gt.image(1,"https://media.giphy.com/media/90F8aUepslB84/giphy.gif"),Tt.getSync().subscribedToOldSdk?gt.remoteLogTracking(1,"info",e,"User subscribed from older sdk, hence not sending subscription event"):(null!=t?fn.addAttribute("Web Migrated User","true"):fn.addAttribute("Web Subscription URL",location.href),Qt.track(y,{MOE_WEB_PUSH_TOKEN:n.subscriptionDetails.token,migrated_user:!!window.location.search.includes("moe_migration=true")||void 0}))})),this.sdkSettings.isDomainLevelStorage&&(Be.set(r.SUBSCRIPTION_DETAILS,{domain:n.subscriptionDetails.domain,token:n.subscriptionDetails.token,endpoint:n.subscriptionDetails.endpoint,keys:n.subscriptionDetails.keys}),Be.set(r.PUSH_TOKEN,n.subscriptionDetails.token))):(gt.error(1,e,"Push token was received as null."),gt.error(1,e,"Please contact MoEngage support if this troubleshooting does not solve the issue.")):n.state===Zt.DENIED&>.image(1,V)})).catch((t=>{gt.warn(1,e,t)}))},n=()=>{this.softAskManager?this.softAskManager.showSoftAsk().then((e=>{e.showHardAsk&&t()})):gt.log(1,e,"SoftAskManager not set.")};this.notificationManager.getCurrentPermissionState().then((i=>{if(i===Zt.GRANTED)this.sdkSettings.optInConfig.type!==Nt.TYPE.ONE_CLICK&>.remoteLogTracking(1,"info",e,"Skipping soft ask as browser permission is set to allow all notifications"),t();else{var a=parseInt(Fe.get(r.OPT_IN_SHOWN_TIME));if(Fe.get(r.SOFT_ASK_STATUS),Fe.get(r.HARD_ASK_STATUS),i=(Date.now()-a)/36e5,!a||i>this.sdkSettings.optInConfig.reappearTime)if(this.browser.name===St.BROWSER_NAMES.SAFARI&&this.sdkSettings.optInConfig.type===Nt.TYPE.ONE_CLICK){gt.log(1,e,"1 step optin configured. In Safari 16+ and macOS 13+, the web push optin will be shown after a user click. Any delay will be ignored.");const t=()=>{window.removeEventListener("click",t),n()};window.addEventListener("click",t)}else n();else{let t,n;n=i<1?(t=Math.floor(60*i),"minute(s)"):(t=Math.floor(100*i)/100,"hour(s)"),gt.remoteLogTracking(1,"info",e,"Not showing opt in as last it was shown",t,n,"back on",new Date(a),". Reappear time is set to",this.sdkSettings.optInConfig.reappearTime,"hours."),gt.log(1,e,"You can clear localstorage to get opt-in again.")}}}))}getPermissionState(){return this.notificationManager.getCurrentPermissionState()}showNotification(e){this.notificationManager&&this.notificationManager.showNotification(e)}trackPushOptedDeviceAttribute(){return new Promise((e=>{var t=Fe.get(r.OPTED_STATUS_TRACK_TIME);t&&864e5{Sn.addScript(e.src,(()=>{var n=new(0,window[ne[e.name].windowLocation])(n=xe.get());t(n)}))}))),Sn.loadPromises[e.name]}static addScript(e,t){const n=document.createElement("script");n.setAttribute("src",e),n.onload=t,n.async=!0,document.body.appendChild(n)}}Sn.baseLogTag="ModuleManager",Sn.loadPromises={};var En=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class yn{static initialize(){return En(this,void 0,void 0,(function*(){var e;return null==yn.ready&&(yn.serviceMetaStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.SERVICE_META.NAME}),yn.campaingsMetaStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_META.NAME}),yn.pendingSecondaryEvents=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.PENDING_SECONDARY_EVENTS.NAME}),yn.pendingTimerCampaigns=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.PENDING_TIMER_CAMPAIGNS.NAME}),yn.triggeringPrimaryEvents=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.TRIGGERING_PRIMARY_EVENTS.NAME}),yn.campaingsTagsStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_TAGS.NAME}),yn.campaingsStatsStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_STATS.NAME}),yn.testCampaignStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.CAMPAIGNS_STATS.NAME}),yn.exitIntentCampaignStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:te.DATABASE_NAME,storeName:te.STORES.EXIT_INTENT_CAMPAIGN_STORE.NAME}),e=[yn.serviceMetaStore.ready(),yn.campaingsMetaStore.ready(),yn.pendingSecondaryEvents.ready(),yn.pendingTimerCampaigns.ready(),yn.triggeringPrimaryEvents.ready(),yn.campaingsTagsStore.ready(),yn.campaingsStatsStore.ready(),yn.testCampaignStore.ready(),yn.exitIntentCampaignStore.ready()],yn.ready=Promise.all(e)),yn.ready}))}static clear(){return En(this,void 0,void 0,(function*(){var e=yn.baseLogTag+".clear";try{yield yn.initialize(),yield Promise.all([yn.serviceMetaStore.clear(),yn.campaingsMetaStore.clear(),yn.campaingsTagsStore.clear(),yn.campaingsStatsStore.clear(),yn.testCampaignStore.clear(),yn.exitIntentCampaignStore.clear(),yn.pendingSecondaryEvents.clear(),yn.pendingTimerCampaigns.clear(),yn.triggeringPrimaryEvents.clear()]);var t=[yn.serviceMetaStore.ready(),yn.campaingsMetaStore.ready(),yn.campaingsTagsStore.ready(),yn.campaingsStatsStore.ready(),yn.testCampaignStore.ready(),yn.exitIntentCampaignStore.ready(),yn.pendingSecondaryEvents.clear(),yn.pendingTimerCampaigns.clear(),yn.triggeringPrimaryEvents.clear()];yn.ready=Promise.all(t)}catch(t){gt.error(1,e,"Error clearing onsite stores:",t)}return yn.ready}))}}yn.baseLogTag="MOE_ONSITE_STORES";var bn,_n,Tn,In,wn,An=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Cn=(e,t,n)=>null==e.campaignId?()=>{}:()=>(yn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{clicks:_e(t,"clicks",0)+1}):{clicks:1},yn.campaingsStatsStore.setItem(e.campaignId,t)})),null==n&&(n={}),Rn().track_event(te.EVENT_NAMES[t].CLICK,Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},n),e.campaignContext))),On=(e,t,n=!1)=>null==e.campaignId?()=>{}:()=>{if(yn.initialize().then((()=>{yn.campaingsStatsStore.getItem(e.campaignId).then((t=>{t=null!=t?Object.assign(Object.assign({},t),{impressions:_e(t,"impressions",0)+1,lastImpression:new Date}):{impressions:1,lastImpression:new Date},yn.campaingsStatsStore.setItem(e.campaignId,t)}))})),!n)return Rn().track_event(te.EVENT_NAMES[t].IMPRESSION,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE,templateType:e.templateType},e.campaignContext))},Dn=(e,t,n)=>{n=n?te.EVENT_NAMES[t].AUTO_DISMIS:te.EVENT_NAMES[t].DISMISS,Rn().track_event(n,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},e.campaignContext))},Pn=(e,t)=>{Rn().track_event(te.EVENT_NAMES[t].DELIVERED,Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName,type:te.EVENT_NAMES[t].TYPE},e.campaignContext))},Rn=()=>{var e=window.moengage_object||"Moengage";return window[e]};class Nn{static isValid(e,t){return!Nn.isCampaignExpired(e)&&Nn.isCampaignActive(e)&&Nn.isUserInCampaignSegment(e)&&Nn.isCampaignWithinFC(e,t)}static isCampaignExpired(e){return(new Date).getTime()>new Date(e.expiryTime).getTime()}static isValidMessagingCampaign(e,t,n,i,a){return Nn.canCampaignBeRenderedOverExisting(e,a.length)&&Nn.hasCampaignClearedSelfDelay(e,t)&&Nn.hasCampaignClearedGlobalDelay(e,n,i)}static isCampaignActive(e){var t=Nn.baseLogTag+".isValid";return e.status===Tn.ACTIVE||(gt.warn(1,t,`Campaign ${e.campaignId} : Status is `+e.status),!1)}static isUserInCampaignSegment(e){var t=Nn.baseLogTag+".isValid";return!!e.userInSegment||(gt.warn(1,t,`Campaign ${e.campaignId} : User is not in segment`),!1)}static isCampaignWithinFC(e,t){var n=Nn.baseLogTag+".isValid";if([wn.SELF_HANDLED].indexOf(e.templateType)<0){var i=_e(e,"delivery.fc_meta.count",0);if(0e.delivery.priority||!(t.delivery.prioritye.updatedTime?1:-1}}Nn.baseLogTag="CampaignUtils";const Ln=e=>An(void 0,void 0,void 0,(function*(){var t=e.map((e=>yn.campaingsStatsStore.getItem(e.campaignId)));let n;try{n=yield Promise.all(t);const i=e.filter(((e,t)=>Nn.isValid(e,n[t])));return i.sort(Nn.comparator)}catch(t){return gt.error(1,"filterAndSortCampaigns","Error filtering and sorting campaigns: ",t),[]}}));class kn{}kn.REMOVE_TRAIL_CHARS=/[^\w\s]+$/gi;const Mn=(e,t)=>{const n=_e(e,"triggerData.primary_condition.included_filters",null);return(null==n?void 0:n.filter_operator)===In.OR&&-1<(null==n?void 0:n.filters.findIndex((e=>e.action_name===t)))},xn=e=>An(void 0,void 0,void 0,(function*(){var t=yield yn.exitIntentCampaignStore.getItem(e.campaignId);if(t)return t.error?t:(e.onsitePayload=t,gt.log(1,"getPrefetchedCampaign","Prefetched exit intent campaign found: "+e.campaignId),e)})),Bn=e=>An(void 0,void 0,void 0,(function*(){try{return yield yn.campaingsMetaStore.getItem(e)}catch(e){return gt.error(2,"getCampaignById","Error getting campaign from store: ",e),null}})),Un=()=>new Promise((e=>{setTimeout((()=>An(void 0,void 0,void 0,(function*(){const t=[];yield yn.campaingsMetaStore.iterate((e=>{t.push(e)})),e(t)}))),0)})),Fn=e=>null===(e=_e(e,"triggerData.secondary_condition.included_filters.filters"))||void 0===e?void 0:e.length,Wn=e=>"moe-onsite-campaign-"+e;class Hn{constructor(e,t,n,i){this.dataType=e,this.availableOperations=t,this.event=n,this.filter=i}validate(){return!(this.availableOperations.indexOf(this.filter.operator)<0)}checkEq(){let e=!1;return this.event.attributes.forEach((t=>{let n=t.value,i=this.filter.value;this.dataType===bn.STRING&&typeof n===bn.STRING&&(n=this.removeSpecialChars(n),i=this.removeSpecialChars(i)),t.key===this.filter.name&&(this.dataType!==bn.STRING||this.filter.case_sensitive?n===i&&(e=!0):n.toLowerCase()===i.toLowerCase()&&(e=!0))})),e}checkExists(){let e=!1;return this.event.attributes.forEach((t=>{t.key===this.filter.name&&(e=!0)})),e}removeSpecialChars(e){return e.replace(kn.REMOVE_TRAIL_CHARS,"")}}($i=bn=bn||{}).BOOL="bool",$i.STRING="string",$i.DATE="datetime",$i.NUMBER="double",$i.LONG="long",$i.ARRAY_BOOL="array_bool",$i.ARRAY_NUMBER="array_double",$i.ARRAY_STRING="array_string",$i.ARRAY_DATETIME="array_datetime",$i.OBJECT="object",($i=_n=_n||{}).ALLOF="all_of",$i.ANYOFF="any_of";const Gn=["is","exists","contains","startsWith","endsWith","in","containsInTheFollowing","startsWithInTheFollowing","endsWithInTheFollowing"];class Kn extends Hn{constructor(e,t){super(bn.STRING,Gn,e,t)}evaluate(){Kn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0this.filter.case_sensitive?0<=e.value.indexOf(t):0<=e.value.toLowerCase().indexOf(t.toLowerCase());return Array.isArray(this.filter.value)?this.filter.array_filter_type===_n.ALLOF?this.checkInTheFollowing(t).every((e=>!0===e)):this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkStartsWith(e){var t=t=>{var n=(e,t)=>e.substr(0,t.length)===t;return this.filter.case_sensitive?n(e.value,t):n(e.value.toLowerCase(),t.toLowerCase())};return Array.isArray(this.filter.value)?this.filter.array_filter_type===_n.ALLOF?this.checkInTheFollowing(t).every((e=>!0===e)):this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkEndsWith(e){var t=t=>{var n=(e,t,n)=>((void 0===n||n>e.length)&&(n=e.length),e.substring(n-t.length,n)===t);if(this.filter.case_sensitive)return n(e.value,t);const i=this.removeSpecialChars(e.value),a=this.removeSpecialChars(t);return n(i.toLowerCase(),a.toLowerCase())};return Array.isArray(this.filter.value)?this.filter.array_filter_type===_n.ALLOF?this.checkInTheFollowing(t).every((e=>!0===e)):this.checkInTheFollowing(t).includes(!0):t(this.filter.value)}checkIn(e){let t=!1;if(Array.isArray(this.filter.value))for(let n=this.filter.value.length-1;0<=n;n--)if(this.filter.case_sensitive){if(this.filter.value[n]===e.value){t=!0;break}}else if(this.filter.value[n].toLowerCase()===e.value.toLowerCase()){t=!0;break}return t}checkInTheFollowing(e){return this.filter.value.map((t=>e(t)))}}Kn.baseLogTag="StringDataType";const Vn=["is","exists"];class jn extends Hn{constructor(e,t){super(bn.BOOL,Vn,e,t)}evaluate(){let e=!1;switch(this.filter.operator){case"is":e=this.checkEq();break;case"exists":e=this.checkExists()}return this.filter.negate?!e:e}}jn.baseLogTag="BooleanDataType";const Yn=["is","exists","greaterThan","lessThan","between","in"];class zn extends Hn{constructor(e,t){super(bn.NUMBER,Yn,e,t)}evaluate(){zn.baseLogTag;let e=!1;var t=this.event.attributes.filter((e=>e.key===this.filter.name)),n=0this.filter.value}checkLessThan(e){return e.valuee.key===this.filter.name));const n=0t:e.value.setHours(0,0,0,0)t:e.value.setHours(0,0,0,0)>t.setHours(0,0,0,0)}checkLastX(e){var t=(new Date).setHours(0,0,0,0);return 0e.key===this.filter.name));return null!=(t=0Array.isArray(e))(t.value)&&(e=this.filter.array_filter_type&&this.filter.array_filter_type===_n.ANYOFF?this.checkAnyOf(t):this.checkAllOf(t)),e}checkAllOf(e){return e.value.every((t=>this.getFilterResult(t,e)))}checkAnyOf(e){return e.value.some((t=>this.getFilterResult(t,e)))}getFilterResult(e,t){let n=!1;e=this.createCustomEvent(t.key,e);const i=this.getDataType(e);return i.validate()&&(n=i.evaluate()),n}createCustomEvent(e,t){return t=new Et(e,t),new Jt(this.event.name,[t])}getDataType(e){let t;switch(this.filter.data_type){case bn.ARRAY_BOOL:t=new jn(e,this.filter);break;case bn.ARRAY_DATETIME:t=new $n(e,this.filter);break;case bn.ARRAY_NUMBER:t=new zn(e,this.filter);break;case bn.ARRAY_STRING:t=new Kn(e,this.filter)}return t}}class Qn{constructor(e,t){this.event=e,this.filter=t}evaluate(){let e;var t=this.event.attributes.filter((e=>e.key===this.filter.name));const n=0{if("exists"===e.operator){var t=(null==e?void 0:e.name)in(null==n?void 0:n.value);return e.negate?!t:t}return(null==e?void 0:e.name)in(null==n?void 0:n.value)&&(t=new Et(e.name,n.value[e.name]),t=new Jt(e.name,[t]),Zn.doesEventMatchFilters(t,e))})),a=this.filter.filter_operator;e=(null==i?void 0:i[0])||!1;for(let t=1;tt.action_name===e||t.action_name===_&&"MOE_EXIT"===e))}static areFiltersAbsent(e){return!(null==e||!e.action_name||null!==(e=null==e?void 0:e.attributes)&&void 0!==e&&e.filters)}static getFilters(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filters)||null}static getFilterOperator(e){return(null==e?void 0:e.action_name)&&(null===(e=null==e?void 0:e.attributes)||void 0===e?void 0:e.filterOperator)||In.AND}static isTriggered(e,t,n,i){let a=!0;if(0<(null==t?void 0:t.length)){let o;o=i||ei.getFilterOperator(n);var r=t.map((t=>Zn.doesEventMatchFilters(e,t)));a=r[0]||!1;for(let e=1;ee.action_name===I));return e=ei.getFilters(i),ei.isTriggered(t,e,i)}return!0}}ei.baseLogTag="OnsiteCampaignMeta";class ti{constructor(e){this.cs_id=e.cs_id,this._id=e._id,this.references=e.references,this.trigger_wait_time=e.trigger_wait_time||null,ii.validate(e.primary_condition)?this.primary_condition=new ii(e.primary_condition):this.primary_condition=null,ii.validate(e.secondary_condition)?this.secondary_condition=new ii(e.secondary_condition):this.secondary_condition=null,ii.validate(e.url_condition)?this.url_condition=new ii(e.url_condition):this.url_condition=null,this.description=e.description,null!=e.trigger_delay?this.trigger_delay=new ni(e.trigger_delay):this.trigger_delay=null}static validate(e){let t=!1;return["primary_condition"].forEach((n=>{null!=_e(e,n,null)&&(t=!0)})),t}}class ni{constructor(e){if(this.delay=_e(e,"delay",0),this.unit=_e(e,"unit","seconds"),this.delay_type=_e(e,"delay_type",""),this.attribute=_e(e,"attribute",""),_e(e,"delay",null)&&_e(e,"unit",null)){let e=this.delay;"minutes"!==this.unit&&"hours"!==this.unit&&"days"!==this.unit||(e*=60),"hours"!==this.unit&&"days"!==this.unit||(e*=60),"days"===this.unit&&(e*=24),this.delayInSeconds=e}else this.delayInSeconds=0}}class ii{constructor(e){this.included_filters=new ai(_e(e,"included_filters",null)),this.excluded_filters=new ai(_e(e,"excluded_filters",null))}static validate(e){return!!(e&&(e=e.included_filters)&&Array.isArray(e.filters)&&e.filters.length&&null!=e.filter_operator)}}class ai{constructor(e){this.filter_operator=_e(e,"filter_operator",In.AND),this.filters=null===(e=_e(e,"filters",[]))||void 0===e?void 0:e.map((e=>new ri(e)))}}class ri{constructor(e){const t=_e(e,"action_name",null);"string"==typeof t&&(t.includes(".")?this.action_name=Ye(t):this.action_name=t);var n=_e(e,"executed",null);"boolean"==typeof n&&(this.executed=n),this.filter_type=_e(e,"filter_type",null),n=_e(e,"attributes",null),oi.validateJson(n)&&(this.attributes=new oi(n)),"nested_filters"===this.filter_type&&(this.filters=new ai(e))}}class oi{constructor(e){this.filters=[],this.filterOperator=_e(e,"filter_operator",In.AND),this.filters=_e(e,"filters",[]),this.filters.length&&this.filters.forEach((e=>{var t;null!==(t=null==e?void 0:e.name)&&void 0!==t&&t.includes(".")&&(e.name=Ye(e.name))}))}static validateJson(e){if(null==e)return!1;var t=["filters"];for(let n=0;n{ei.isValidMetaJSON(e)&&a.push(new ei(e))})),{campaignsMeta:a,globalDelayBetweenInapps:_e(i,"min_delay_btw_inapps",0)}}catch(t){throw gt.error(1,e,"Error getting meta for inapp: ",t),new Error("Could not get meta payload")}}))}getCampaignPayload(e,t){return ui(this,void 0,void 0,(function*(){var n=pi.baseLogTag+".getCampaignPayload";let i;try{const n={contexts:["string"],campaign_context:e.campaignContext,user_session_attributes:this.getUserSessionAttributes()};if(t){const a={};for(let e=0;e{n.push(new gi(e))})),n}catch(i){throw gt.error(1,n,"Error geting payload",i),new Error("Could not get payload for "+e)}}))}getDraftCampaign(e){return ui(this,void 0,void 0,(function*(){var t=pi.baseLogTag+".getDraftCampaign";try{const t=yield this.getRequestOptions();t.queryParams=Object.assign({},t.queryParams,{locale:e.locale,variation:e.variation});var n=yield pt.post(this.host+te.API.DRAFT_CAMPAIGN_PAYLOAD+e.draftId,t);const i=JSON.parse(n.responseText);return"JSON"===i.payload_type&&(i.payload=JSON.parse(i.payload)),new gi(i)}catch(n){return gt.error(1,t,"Error geting test campaign payload",n),null}}))}getRequestOptions(e={}){const t=Xe();return nn.getWebSDKSettings().then((n=>{var i=Fe.get(r.USER_DATA);let a;const{deviceUuid:o,attributes:s}=i;if(s.map((e=>{e.key===w&&(a=null===(e=null==e?void 0:e.value)||void 0===e?void 0:e.toString())})),!o)throw new Error("device_unique_id not found in localStorage.");var l=ze()?"mweb":"web";return i=$e(),{headers:{"Content-Type":"application/json","MOE-APPKEY":this.appId},queryParams:Object.assign({sdk_ver:t.getSdkVersion(),unique_id:o,os:l},i),postData:Object.assign(Object.assign({},e),{uid:a})}})).catch((e=>{throw new Error("Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}callStatsAPI(e,t){const n=pi.baseLogTag+".callStatsAPI";this.getRequestOptions().then((t=>{var i=this.host+te.API.STATS;t.queryParams.app_id=t.headers["MOE-APPKEY"],delete t.queryParams.uid,i=rt(i,t.queryParams),gt.log(1,n,"[sendBeacon] payload: "+JSON.stringify(e)),t=new Blob([JSON.stringify(e)],{type:"text/plain;charset=UTF-8"}),navigator.sendBeacon(i,t)}))}}pi.baseLogTag="OnsiteApi";class hi{constructor(){this.isExitIntentShown=!1,this.isPopStateEventBound=!1}onScroll(e){const t=hi.baseLogTag+".onScroll";null==e&&(e=()=>{});var n=hi.throttle((()=>{gt.remoteLogTracking(1,"info",t,"Scrolled percent:",hi.getScrollPercent()),e(hi.getScrollPercent())}),te.SCROLL_CAMPAIGN_THROTTLING_TIME);return e(hi.getScrollPercent()),window.addEventListener("scroll",n),n}onMobileTabChange(e){const t=hi.baseLogTag+".onMobileTabChange";document.addEventListener("visibilitychange",(()=>{this.isExitIntentShown||"hidden"!==document.visibilityState||(gt.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0)}))}onMobileBackHit(e){const t=hi.baseLogTag+".onMobileBackHit";setTimeout((()=>{this.isPopStateEventBound=!0,window.addEventListener("popstate",(n=>{!this.isExitIntentShown&&n.state&&"exit_intent"===n.state.moeIntent&&(gt.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e("onBackClick"),this.isExitIntentShown=!0)}))}),1e3),this.setHistoryState()}setHistoryState(){window.history.state&&"no_intent"===window.history.state.moeIntent||(window.history.replaceState(Object.assign(Object.assign({},window.history.state),{moeIntent:"exit_intent"}),""),window.history.pushState(Object.assign(Object.assign({},window.history.state),{moeIntent:"no_intent"}),""))}onMobileScrollAndExit(e){const t=hi.baseLogTag+".onMobileScrollAndExit",n=document.documentElement.offsetHeight;let i,a=hi.getScrollY();0{let r=a-hi.getScrollY();r<0&&(r=0,a=hi.getScrollY()),i=hi.getScrollPercent()>te.EXIT_INTENT.CONFIG.SCROLL_DOWN_THRESHOLD,i&&r/n>te.EXIT_INTENT.CONFIG.SCROLL_UP_THRESHOLD/100&&(clearInterval(this.scrollExitIntentInterval),this.scrollExitIntentInterval=null,this.isExitIntentShown||(gt.log(1,t,"TRIGGERED: MOBILE EXIT INTENT"),e(),this.isExitIntentShown=!0))}),te.EXIT_INTENT.CONFIG.SCROLL_INTERVAL))}mobileExitIntent(e){this.onMobileScrollAndExit(e),this.onMobileBackHit(e),this.onMobileTabChange(e)}onExit(e){const t=hi.baseLogTag+".onExit";ze()?this.mobileExitIntent(e):(this.exitIntentListener=n=>{return i=this,r=function*(){var i=window.innerWidth,a=window.innerHeight;(n.clientY<0||n.clientX<0||n.clientY>=a||n.clientX>=i)&&(gt.log(1,t,"TRIGGERED: EXIT INTENT"),e())},new(a=(a=void 0)||Promise)((function(e,t){function n(e){try{s(r.next(e))}catch(e){t(e)}}function o(e){try{s(r.throw(e))}catch(e){t(e)}}function s(t){var i;t.done?e(t.value):((i=t.value)instanceof a?i:new a((function(e){e(i)}))).then(n,o)}s((r=r.apply(i,[])).next())}));var i,a,r},document.addEventListener("mouseout",this.exitIntentListener,!1))}static getScrollPercent(){const e=window,t=document,n=t.documentElement,i=t.getElementsByTagName("body")[0],a=e.innerHeight||n.clientHeight||i.clientHeight;var r=document.body,o=document.documentElement;return a<(o=Math.max(r.scrollHeight,r.offsetHeight,o.clientHeight,o.scrollHeight,o.offsetHeight))?100*hi.getScrollY()/(o-a):100}static getScrollY(){let e=0;return"number"==typeof window.pageYOffset?e=window.pageYOffset:document.body&&document.body.scrollTop&&(e=document.body.scrollTop),e}static throttle(e,t){let n;return(...i)=>{n=n||window.setTimeout((()=>{n=null,e.apply(null,i)}),t)}}static setOnlineEventListner(e){window.addEventListener("online",e,{once:!0})}}hi.baseLogTag="WindowEventManager";var mi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class fi{static getPendingSecondaryEventCampaign(e){return mi(this,void 0,void 0,(function*(){return yield yn.pendingSecondaryEvents.getItem(e)}))}static setPendingSecondaryEventCampaign(e,t){return mi(this,void 0,void 0,(function*(){yield yn.pendingSecondaryEvents.setItem(e,t)}))}static removePendingSecondaryEventCampaign(e){return mi(this,void 0,void 0,(function*(){yield yn.pendingSecondaryEvents.removeItem(e)}))}static getPendingSecondaryEventKeys(){return mi(this,void 0,void 0,(function*(){return yield yn.pendingSecondaryEvents.keys()}))}static getPendingTimerCampaign(e){return mi(this,void 0,void 0,(function*(){return yield yn.pendingTimerCampaigns.getItem(e)}))}static setPendingTimerCampaign(e,t){return mi(this,void 0,void 0,(function*(){yield yn.pendingTimerCampaigns.setItem(e,t)}))}static removePendingTimerCampaign(e){return mi(this,void 0,void 0,(function*(){yield yn.pendingTimerCampaigns.removeItem(e)}))}static getPendingTimerKeys(){return mi(this,void 0,void 0,(function*(){return yield yn.pendingTimerCampaigns.keys()}))}static getTriggeringPrimaryEvent(e){return mi(this,void 0,void 0,(function*(){return yield yn.triggeringPrimaryEvents.getItem(e)}))}static setTriggeringPrimaryEvent(e,t){return mi(this,void 0,void 0,(function*(){yield yn.triggeringPrimaryEvents.setItem(e,t)}))}static removeTriggeringPrimaryEvent(e){return mi(this,void 0,void 0,(function*(){yield yn.triggeringPrimaryEvents.removeItem(e)}))}static getTriggeringPrimaryEventKeys(){return mi(this,void 0,void 0,(function*(){return yield yn.triggeringPrimaryEvents.keys()}))}static removeCampaignFromStores(e){return mi(this,void 0,void 0,(function*(){yield fi.removePendingSecondaryEventCampaign(e),yield fi.removePendingTimerCampaign(e)}))}}var vi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Si{static setListener(e){this.listener=e}static destroy(){this.listener=null,this.deliveryStats=null}static setDeliveryStats(e){this.deliveryStats=e}static createNewTimers(){return vi(this,void 0,void 0,(function*(){var e=this.baseLogTag+".createNewTimers",t=yield fi.getPendingTimerKeys();for(let a=0;avi(this,void 0,void 0,(function*(){yield this.checkAndInvokeListener(e),yield fi.removeCampaignFromStores(e)}))),t);n={startTime:Date.now(),timerId:n,timer:t},yield fi.setPendingTimerCampaign(e,n)}))}static checkAndInvokeListener(e){return vi(this,void 0,void 0,(function*(){var t=this.baseLogTag+".checkAndInvokeListener",n=yield Bn(e);null!=n&&n.campaignId&&((yield this.isSatisfyingEventsArray(e))?ei.getURLFilterResult(n)&&(gt.log(1,t,`Campaign ${e} satisfies the secondary_condition and the url_condition after timer has elapsed`),this.closeProximityTimerCampaigns.push(n),this.closeProximityCampaignsTimeout||(this.closeProximityCampaignsTimeout=setTimeout((()=>{this.listener(this.closeProximityTimerCampaigns),this.closeProximityTimerCampaigns=[],this.closeProximityCampaignsTimeout=null}),500))):(gt.warn(1,t,`Campaign: ${e} does not satisfy secondary_condition after its timer has elapsed. Removing its entry from secondary stores`),this.deliveryStats.setStats(n,te.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED),this.deliveryStats.setStats(n,te.DELIVERY_FUNNEL.EVALUATION.CAMPAIGN_EVALUATION_PATH_TIME_EXPIRED),this.deliveryStats.sendDeliveryStats([n])))}))}static checkIfPendingAction(e,t){return t===In.AND&&!e.events.some((e=>1===e.filters.length&&!e.filters[0].executed))}static isSatisfyingEventsArray(e){return vi(this,void 0,void 0,(function*(){var t=yield fi.getPendingSecondaryEventCampaign(e);if(null!=t&&t.events){if(!t.events.length)return!0;var n=t.operator;for(let e=0;e=r.timer&&(yield this.isSatisfyingEventsArray(a))&&null!=(r=yield Bn(a))&&r.campaignId&&(gt.warn(1,e,`Campaign: ${a} contained 'has not executed' event(s) and had satisfied secondary_condition, but the website was closed when the timer elapsed`),i.push(r),yield this.deleteTimerAndRemoveFromStores(a))}this.sendUserNotOnAppStat(i)}))}static sendUserNotOnAppStat(e){for(let n=0;n{if("nested_filters"===e.filter_type){const t={operator:e.filters.filter_operator,filters:[]};e.filters.filters.forEach((e=>{t.filters.push(e),!1===e.executed&&(i=!0)})),n.events.push(t)}else{var t={operator:n.operator===In.AND?In.OR:In.AND,filters:[e]};n.events.push(t),!1===e.executed&&(i=!0)}})),n.updated_time=Date.now(),n.time_left=1e3*e.triggerData.trigger_wait_time.wait_period,{campaignEntry:n,isCampaignTimerSet:i}}static pruneRemovedCampaigns(){return Ei(this,void 0,void 0,(function*(){var e=this.baseLogTag+".pruneRemovedCampaigns";const t=(yield Un()).map((e=>e.campaignId));var n=yield fi.getPendingSecondaryEventKeys();for(let a=0;ae.toBeRemoved)))||(gt.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s))):d===In.AND&&(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(r.toBeRemoved=!0,(c===In.OR||c===In.AND&&h.events.every((e=>e.toBeRemoved)))&&(gt.log(1,n,`Campaign: ${s}, triggered by event: ${e.name}, is eligible for further processing`),i.push(s)))):d===In.OR?(o.toBeRemoved=!0,r.filters.every((e=>e.toBeRemoved))&&(c===In.AND||c===In.OR&&1===h.events.length?(gt.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s)):r.toBeRemoved=!0)):d===In.AND&&(r.toBeRemoved=!0,1===h.events.length&&h.events[0].toBeRemoved&&c===In.OR&&(gt.warn(1,n,`The event: ${e.name} breaks secondary conditons of the campaign: ${s}. Removing the campaign from secondary stores and clearing any setTimeout associated to it`),a.push(s))))}}a.includes(s)||i.includes(s)||(yield this.updatePendingSecondaryEvents(s,h))}}return this.sendPathTimeExpiredStat(r),yield this.clearCampaignsData(a),yield this.clearCampaignsData(i),i}))}static sendPathTimeExpiredStat(e){for(let n=0;n!e.toBeRemoved));for(let e=0;e!e.toBeRemoved))}yield fi.setPendingSecondaryEventCampaign(e,t)}))}static clearCampaignsData(e){return Ei(this,void 0,void 0,(function*(){for(let t=0;tEi(this,void 0,void 0,(function*(){n.includes(t)||(gt.warn(1,e,`Campaign: ${t} does not exist in pendingSecondaryEvents store but exists in triggeringPrimaryEvents store. Removing it from triggeringPrimaryEvents store`),yield fi.removeTriggeringPrimaryEvent(t))}))))}))}}yi.baseLogTag="SecondaryEventsManager",yi.deliveryStats=null;var bi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class _i{constructor(e){this.primaryEventsHash={},this.secondaryEventsHash={},this.messagingCampaigns=[],this.scrollCampaigns=[],this.scrollCampaignTriggered=!1,this.exitIntentCampaigns=[],this.exitCampaignTriggered=!1,this.listener=null,this.historyManager=window[ee],this.onEvent=e=>bi(this,void 0,void 0,(function*(){var t=_i.baseLogTag+".onEvent";try{null!=this.primaryEventsHash[e.name]&&(yield this.handlePrimaryEvent(e)),null!=this.secondaryEventsHash[e.name]&&(yield this.handleSecondaryEvent(e))}catch(e){gt.error(1,t,"Error occurred during check event trigger campaigns: ",e)}})),this.onScroll=e=>bi(this,void 0,void 0,(function*(){const t=_i.baseLogTag+".onScroll";try{if(this.scrollCampaigns&&0bi(this,void 0,void 0,(function*(){var i,a=null===(i=null===(a=null===(i=null===(a=null===(i=null==n?void 0:n.triggerData)||void 0===i?void 0:i.primary_condition)||void 0===a?void 0:a.included_filters)||void 0===i?void 0:i.filters[0])||void 0===a?void 0:a.attributes)||void 0===i?void 0:i.filters[0];a&&(i=new Et(a.name,a.value),i=yield Jt.createEvent(T,[i]),ei.getFilterResult(i,n)&&e>a.value&&!this.scrollCampaignTriggered&&(this.scrollCampaignTriggered=!0,window.removeEventListener("scroll",this.scrollListenerCallback),gt.log(1,t,"Triggered Scroll campaign"),this.trigger([n],i)))}))))}}catch(n){gt.error(1,t,"Error occurred in triggering scroll campaigns ",n)}})),this.onExit=e=>bi(this,void 0,void 0,(function*(){var t=_i.baseLogTag+".onExit";try{if(0ei.getFilterResult(i,e)));n.length?(gt.log(1,t,"Triggered Exit Intent campaign: ",n),this.trigger(n,i)):("onBackClick"===e&&window.history.back(),gt.log(1,t,"No Exit Intent campaign is eligible."))}}catch(n){gt.error(1,t,"Error occurred in triggering exit intent campaigns ",n)}})),this.messagingCampaigns=e,this.windowEventManager=new hi}onTrigger(e){this.listener=e}handlePrimaryEvent(e){return bi(this,void 0,void 0,(function*(){var t=_i.baseLogTag+".handlePrimaryEvent",n=this.primaryEventsHash[e.name];const i=[],a=[];for(let e=0;eei.didPrimaryEventFilterTrigger(e,t)));o.length&&(yield yi.createPendingSecondaryEvents(o,e)),o=a.filter((t=>ei.getFilterResult(e,t))),o.length&&(gt.log(1,t,`Campaigns triggered for event ${e.name}: `+o.length),this.trigger(o,e))}))}handleSecondaryEvent(e){return bi(this,void 0,void 0,(function*(){var t=_i.baseLogTag+".handleSecondaryEvent",n=yield yi.updatePendingSecondaryEventsHistory(e,this.secondaryEventsHash[e.name]);let i=[];for(let e=0;eei.getURLFilterResult(e))),i.length&&(gt.log(1,t,`Campaigns triggered by secondary event "${e.name}": `+i.length),this.trigger(i))}))}getCampaignsFromHash(e){return bi(this,void 0,void 0,(function*(){const t=[];var n=this.primaryEventsHash[e];if(null!=n&&n.length)for(let e=0;e{this.addEntryInEventsHash(this.primaryEventsHash,t.action_name,e.campaignId)}))}createSecondaryEventsHash(e){const t=_e(e,"triggerData.secondary_condition.included_filters.filters",[]);null!=t&&t.forEach((t=>{"nested_filters"===t.filter_type?t.filters.filters.forEach((t=>{this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)})):this.addEntryInEventsHash(this.secondaryEventsHash,t.action_name,e.campaignId)}))}startWatching(){return bi(this,void 0,void 0,(function*(){_i.baseLogTag,this.messagingCampaigns.forEach((e=>{this.createPrimaryEventsHash(e),this.createSecondaryEventsHash(e)})),this.historyManager&&(this.historyManager.getHistory().forEach(this.onEvent),this.historyManager.addEventListener(this.onEvent)),this.scrollCampaignTriggered=!1,this.scrollCampaigns=this.messagingCampaigns.filter((e=>Mn(e,T))),0Mn(e,_))),0this.active,this.campaignMeta=e,this.data=t,this.active=!1,this.campaignRendered=!1;const n=_e(e,"triggerData.trigger_delay.delayInSeconds",0)||0;this.waitForDelay=new Promise((e=>{this.delayTimer=setTimeout((()=>{this.campaignRendered=!0,e()}),1e3*n)}))}setIsActive(e){this.active=e}}const Ii={CENTER:{position:"absolute",top:"50%",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, -50%)"},CENTER_LEFT:{position:"absolute",top:"50%",left:"10px",bottom:"auto",right:"auto",transform:"translate(0,-50%)"},CENTER_RIGHT:{position:"absolute",top:"50%",right:"10px",bottom:"auto",left:"auto",transform:"translate(0,-50%)"},TOP_LEFT:{position:"absolute",top:"10px",left:"10px",bottom:"auto",right:"auto"},TOP_CENTER:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},TOP_RIGHT:{position:"absolute",top:"10px",right:"10px",bottom:"auto",left:"auto"},BOTTOM_LEFT:{position:"absolute",bottom:"10px",left:"10px",top:"auto",right:"auto"},BOTTOM_CENTER:{position:"absolute",left:"50%",bottom:"10px",top:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM_RIGHT:{position:"absolute",bottom:"10px",right:"10px",top:"auto",left:"auto"},TOP:{position:"absolute",top:"0",left:"50%",bottom:"auto",right:"auto",transform:"translate(-50%, 0)"},BOTTOM:{position:"absolute",bottom:"0",top:"auto",right:"auto",left:"50%",transform:"translate(-50%, 0)"},LEFT:{position:"absolute",left:"0",bottom:"auto",right:"auto",top:"auto"},RIGHT:{position:"absolute",right:"0",bottom:"auto",left:"auto",top:"auto"}},wi=e=>{try{return!Ai()&&window.Moengage.onsite.displayManager.campaignRenderMap[e].campaignMeta}catch(t){gt.error(1,"OsmFunctions.getCampaignMeta","Campaign meta not found: "+e)}},Ai=()=>!!window.Moengage.onsite.displayManager.testCampaign&&(gt.log(1,"OsmFunctions.isTestCampaign","Test campaign element. No data will be sent to BE right now. We'll start tracking events once the campaign is live"),!0);var Ci=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};function Oi(e,t,n,i,a){return Ci(this,void 0,void 0,(function*(){const r=Wn(t),o=/moe-campaign-id/g;yield Ci(this,void 0,void 0,(function*(){try{let d=e.root;const{styles:g,scripts:u}=e,p=document.createElement("div");p.id=r,n.parentNode.insertBefore(p,n);const h=document.querySelector("#"+r),m=new DOMParser;d=d.replace(o,t);var s=m.parseFromString(d,"text/html");yield function(e){return Ci(this,void 0,void 0,(function*(){try{const t=e.getElementsByTagName("a");for(let e=t.length-1;0<=e;e--)""===t[e].getAttribute("href")&&t[e].removeAttribute("href")}catch(e){gt.error(2,"InsertCustomHtmlJs.removeEmptyHrefTags","Error while removing Empty href attributes",e)}}))}(s),function(e){try{["trackEvent","trackClick","trackDismiss","dismissMessage","leadGenFormSubmit","fetchRatingValue"].forEach((n=>{!function(e,n){e.querySelectorAll("[onclick]").forEach((e=>{var i=e.getAttribute("onclick").replace(new RegExp(n+"\\((.*?)\\)","g"),((e,i)=>i?n+`('${t}',${i})`:n+`('${t}')`));e.setAttribute("onclick",i)}))}(e,n)}))}catch(e){gt.error(2,"InsertCustomHtmlJs.addCampaignId","Error while adding Campaign Id",e)}}(s);const f=g.map((e=>m.parseFromString(e,"text/html").head.childNodes[0]));var l=u.map((e=>(e=e.replace(o,t),m.parseFromString(e,"text/html").head.childNodes[0]))),c=f.map((e=>new Promise(((t,n)=>{!function(e){const{node:t,onLoad:n,onError:i}=e;t instanceof HTMLMetaElement||"dns-prefetch"===t.getAttribute("rel")?n():(t.onload=()=>n(),t.onerror=()=>i()),document.querySelector("#"+r).appendChild(t)}({node:e,onLoad:t,onError:n})}))));yield Promise.all(c).catch((e=>{gt.warn(1,"InsertCustomHtmlJs","Error loading Styles",(null==e?void 0:e.message)||"")}));const v=s.body.childNodes[0];h.appendChild(v),[...v.querySelectorAll(".brz-embed-code script")].map((e=>{!function(e){const t=document.createElement("script");t.innerHTML=e.innerHTML;for(let a=0;a{const a=document.createElement("script");for(let n=0;n{window.Brz.emit("init.dom",window.jQuery(v)),gt.log(1,"InsertCustomHtmlJs","Custom HTML/JS DOM Level OSM Insertion: "+r),a&&a(i,"OSM")()})).catch((e=>{gt.warn(1,"InsertCustomHtmlJs","Error loading script",(null==e?void 0:e.message)||"")}))}catch(e){gt.error(2,"InsertCustomHtmlJs","Failed to Insert OSM into DOM: "+r)}}))}))}var Di=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class Pi{constructor(){this.renderListener=null,this.initializationPromiseObject=null,this.campaignRenderOrder=[],this.campaignRenderMap={},this.dismissTestInapp=e=>{this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"),this.removeOSMPusher(),this.pushCardsTemplate(0),setTimeout((()=>{var t;return null===(t=document.getElementById("moe-onsite-campaign-"+e))||void 0===t?void 0:t.remove()}),0)},this.dismissInapp=e=>{if(0!==this.getActiveCampaigns().length){const t=this.getActiveCampaigns();setTimeout((()=>{t.forEach((t=>{var n;t.campaignMeta.campaignId===e&&(t.iframe?null!==(n=t.iframe)&&void 0!==n&&n.remove():null!==(t=t.osmDivSelector)&&void 0!==t&&t.remove())}))}),0),this.campaignRenderMap[e].setIsActive(!1),this.campaignRenderOrder=this.campaignRenderOrder.filter((t=>t!==e)),clearInterval(this.campaignRenderMap[e].dismissInterval),this.campaignRenderMap[e].delayTimer=null,this.renderAllActiveCampaigns()}else this.dismissTestInapp(e)},this.clickTracker=Cn,this.dismissEvent=Dn,this.startInitialization(),this.initialInlineBodyStyle=document.body.getAttribute("style")}startInitialization(){return Di(this,void 0,void 0,(function*(){var e=Pi.baseLogTag+".startInitialization";try{null==this.initializationPromiseObject&&(this.initializationPromiseObject=new ht),this.initializationPromiseObject.res()}catch(t){gt.error(1,e,"Error initializing display managaer:",t)}}))}getOSMPusher(e){const t=document.createElement("div");if(t.id=te.PUSH_BANNER,t.style.setProperty("display","block","important"),t.style.height=e+"px","FRAMESET"===document.body.nodeName){const e=document.head;e.parentNode.insertBefore(t,e)}else{const e=document.body.firstChild;e.parentNode.insertBefore(t,e)}return t}removeOSMPusher(){var e;null!==(e=document.getElementById(te.PUSH_BANNER))&&void 0!==e&&e.remove()}queueDraftCampaign(e,t){return Di(this,void 0,void 0,(function*(){var n=Pi.baseLogTag+".queueDraftCampaign";try{yield this.initializationPromiseObject.p,e.position=t.position,this.testCampaign=e;var i=!("1"!==t.editorVersion||!t.htmlJsonPayload);const a=!i&&Pi.createDefaultIframe(this.testCampaign.draftId,t.payload);let r;gt.warn(1,n,"Going to render test campaign "+e.draftId),r="FRAMESET"===document.body.nodeName?this.getOSMPusher(0):document.body.firstChild,i?(yield Oi(t.htmlJsonPayload,this.testCampaign.draftId,r),this.renderTestCampaign(e,a,t)):(r.parentNode.insertBefore(a,r),a.onload=()=>{a.contentWindow.postMessage({campaignId:e.draftId},"*"),"1"===t.editorVersion?this.handleBridgeInsertion(a.contentDocument,e.draftId):this.handleClassBasedTrackingForTestCampaign(a,t,e),this.renderTestCampaign(e,a)})}catch(e){gt.error(1,n,"Error queueing draft campaign",e)}}))}renderTestCampaign(e,t,n){return Di(this,void 0,void 0,(function*(){if(t){var i;t.style.visibility="hidden",t.style.display="block",t.style.zIndex="2147483647",e.displaySettings.config.blocking?(t.style.height=window.innerHeight+"px",t.style.width="100%"):(t.style.height=getComputedStyle(t.contentDocument.body).height,t.style.width=getComputedStyle(t.contentDocument.body).width,e.templateType===wn.POP_UP&&(t.style.margin="0px auto"),-1Di(this,void 0,void 0,(function*(){yield Oi(t.htmlJsonPayload,e.campaignId,n,e,On)})):(n=Pi.createDefaultIframe(e.campaignId,this.campaignRenderMap[e.campaignId].data.payload),this.campaignRenderMap[e.campaignId].iframe=n),yield this.campaignRenderMap[e.campaignId].waitForDelay,(yield this.canCampaignBeRendered(e))?(gt.warn(1,i,"Going to render "+e.campaignId),this.campaignRenderMap[e.campaignId].setIsActive(!0),null!=this.renderListener&&this.renderListener(e),this.renderAllActiveCampaigns()):gt.warn(1,i,"Can not render "+e.campaignId)):gt.warn(1,i,`Can not render ${e.campaignId}, as campaign is already Active.`)}catch(n){gt.error(1,i,"Error queuing campaign "+e.campaignId,n)}}))}renderAllActiveCampaigns(){return Di(this,void 0,void 0,(function*(){var e,t=Pi.baseLogTag+".renderAllActiveCampaigns";const n=this.getActiveCampaigns();if(this.restoreBodyStyle(),0{Ri.setScrollState(n),n[i].iframe.contentWindow.postMessage({campaignId:n[i].campaignMeta.campaignId},"*"),"1"===n[i].campaignMeta.editorVersion?(this.handleBridgeInsertion(n[i].iframe.contentDocument,n[i].campaignMeta.campaignId,n[i].campaignMeta),this.changeAnchorTagReDirectionMethod(n[i].iframe)):this.handleClassBasedTracking(n[i]),n[i].onFrameLoad.res()})}yield n[i].onFrameLoad.p,n[i].isJSONPayloadApproach?(gt.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].osmDivSelector.style.zIndex=(2147483647-(n.length-i-1)).toString(),this.liveCampaignPositionStyling(n[i].campaignMeta,n[i].osmDivSelector)):(n[i].iframe.style.visibility="hidden",n[i].iframe.style.display="block",gt.log(1,t,"zindex for "+n[i].campaignMeta.campaignId,2147483647..toString()),n[i].iframe.style.zIndex=(2147483647-(n.length-i-1)).toString(),n[i].iframe.style.margin="0",n[i].campaignMeta.display.config.blocking?(n[i].iframe.style.height=window.innerHeight+"px",n[i].iframe.style.width="100%"):(n[i].iframe.style.height=getComputedStyle(n[i].iframe.contentDocument.body).height,n[i].iframe.style.padding.includes("10px")?n[i].iframe.style.width=parseInt(getComputedStyle(n[i].iframe.contentDocument.body).width)+20+"px":n[i].iframe.style.width=getComputedStyle(n[i].iframe.contentDocument.body).width,n[i].campaignMeta.templateType===wn.POP_UP&&(n[i].iframe.style.margin="0px auto"),n[i].data.payload&&-1{const e=this.campaignRenderMap[n[i].campaignMeta.campaignId];e&&e.isActive()&&(this.dismissInapp(n[i].campaignMeta.campaignId),window.MoeFocusHandler&&window.MoeFocusHandler(),Dn(n[i].campaignMeta,"OSM",!0))}),e))}else n[i].iframe.style.zIndex=(2147483647-(n.length-i-1)).toString();this.bannerLiveCampaignsStyling(n)}}))}restoreBodyStyle(){this.removeOSMPusher(),this.pushCardsTemplate(0);let e=0;Object.keys(this.campaignRenderMap).forEach((t=>{this.campaignRenderMap[t].campaignMeta.templateType===wn.POP_UP&&this.campaignRenderMap[t].isActive()&&e++})),1<=e||(this.initialInlineBodyStyle?document.body.setAttribute("style",this.initialInlineBodyStyle):document.body.removeAttribute("style"))}canCampaignBeRendered(e){return Di(this,void 0,void 0,(function*(){var t=Pi.baseLogTag+".canCampaignBeRendered";try{var n=yield yn.campaingsStatsStore.getItem(e.campaignId),i=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY),a=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME);return Nn.isValid(e,n)&&Nn.isValidMessagingCampaign(e,n,i,a,this.getActiveCampaigns())&&ei.getURLFilterResult(e)}catch(n){gt.error(1,t,`Error checking if campaign ${e.campaignId} can be rendered:`,n)}return!1}))}static createDefaultIframe(e,t){Pi.baseLogTag,e=Wn(e);const n=document.createElement("iframe");return n.setAttribute("id",e),n.style.left="0px",n.style.top="0px",n.style.bottom="0px",n.style.right="0px",n.style.border="0px none",n.style.height="100%",n.style.width=window.innerWidth.toString()+"px",n.style.padding="0",n.style.overflow="hidden",n.style.overflowY="hidden",n.style.zIndex="999999",n.style.display="none",n.style.position="fixed",n.setAttribute("srcdoc",t),n}onRender(e){this.renderListener=e}getActiveCampaigns(){return this.campaignRenderOrder.map((e=>this.campaignRenderMap[e])).filter((e=>e.isActive()))}destroy(){this.getActiveCampaigns().forEach((e=>{e.setIsActive(!1)})),this.renderAllActiveCampaigns(),this.campaignRenderOrder=[],this.campaignRenderMap={}}adjustPositionOfCampaign(e,t,n){t&&(Object.assign(e,Ii[t]),ze()&&n&&this.addMarginInMweb(e,t))}addMarginInMweb(e,t){const n={paddingLeft:"10px",paddingRight:"10px",marginTop:"0",marginBottom:"0"};"TOP"===t&&(n.marginTop="10px"),"BOTTOM"===t&&(n.marginBottom="10px"),Object.assign(e,n)}handleBridgeInsertion(e,t,n){var i=Pi.baseLogTag+".handleBridgeInsertion";try{e.head.append(((e,t)=>{const n=document.createElement("script");return n.type="text/javascript",n.text=(t=t,`\n const moeSDK = window.parent.Moengage;\n let moeOsmCampaignMeta = ${JSON.stringify(e)};\n const moengage = {\n trackEvent: function (eventName, eventAttr, isNonInteractive) {\n if(moeOsmCampaignMeta) {\n return moeSDK.track_event(eventName, eventAttr);\n }\n return Promise.resolve();\n },\n trackClick: function (id) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.clickTracker(OsmCampaignMeta, 'OSM', {\n widget_id: id,\n })();\n }\n return Promise.resolve();\n },\n trackDismiss: function (isAuto = false) {\n if(moeOsmCampaignMeta) {\n return moeSDK.onsite.displayManager.dismissEvent(OsmCampaignMeta, 'OSM', isAuto);\n }\n return Promise.resolve();\n },\n setAlias: function (data) {\n return moeSDK.update_unique_user_id(data);\n },\n setUniqueId: function (data) {\n return moeSDK.add_unique_user_id(data);\n },\n destroySession: function () {\n return moeSDK.destroy_session();\n },\n setUserName: function (data) {\n return moeSDK.add_user_name(data);\n },\n setFirstName: function (data) {\n return moeSDK.add_first_name(data);\n },\n setLastName: function (data) {\n return moeSDK.add_last_name(data);\n },\n setEmailId: function (data) {\n return moeSDK.add_email(data);\n },\n setMobileNumber: function (data) {\n return moeSDK.add_mobile(data);\n },\n setGender: function (data) {\n return moeSDK.add_gender(data);\n },\n setBirthDate: function (data) {\n //iso date format only\n return moeSDK.add_birthday(data);\n },\n setUserAttribute: function (name, value) {\n return moeSDK.add_user_attribute(name, value);\n },\n dismissMessage: function () {\n setTimeout(() => {\n moeSDK.onsite.displayManager.dismissInapp('${t}');\n }, 100)\n },\n showPushOptIn: function (config) {\n return moeSDK.call_web_push(config);\n },\n copyText: function (selector) {\n return new Promise((res, rej) => {\n if(!selector) rej();\n var text = document.querySelector(selector);\n if(text.textContent) {\n navigator.clipboard.writeText(text.textContent);\n res(null);\n }\n else {\n text.select();\n text.setSelectionRange(0, 99999);\n navigator.clipboard.writeText(text.value);\n res(null);\n }\n })\n }\n }\n const MoeOsm = moengage;\n `),n.setAttribute("data-moe-script","1"),n})(n,t)),gt.log(2,i,"JS-bridge script inserted successfully",t)}catch(e){gt.warn(2,i,"Failed to insert OSM JS Bridge: ",t)}}handleClassBasedTrackingForTestCampaign(e,t,n){const i=Pi.baseLogTag+".handleClassBasedTrackingForTestCampaign";var a=e=>Array.prototype.slice.call(e),r=a(e.contentDocument.getElementsByClassName(te.CSS_SELECTORS.DISMISS_INAPP)),o=a(e.contentDocument.getElementsByClassName(te.CSS_SELECTORS.CLICK_INAPP));if(a=a(e.contentDocument.getElementsByTagName("a")),0===r.length&>.warn(1,i,"No dismiss class items present in this template"),0===o.length&>.warn(1,i,"No click class items present in this template"),-1{e.target&&e.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)&>.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live"),e.target&&e.target.classList.contains(te.CSS_SELECTORS.DISMISS_INAPP)&&this.dismissTestInapp(n.draftId)}));else{for(const e of o)e.addEventListener("click",(e=>{gt.log(1,i,"Clicked on test campaign element. No data will be sent to BE right now. We'll start sending the click events once the campaign is live")}));for(const e of r)e.addEventListener("click",(()=>{this.dismissTestInapp(n.draftId)}))}for(const e of a)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}handleClassBasedTracking(e){var t=Pi.baseLogTag+".handleClassBasedTracking",n=e=>Array.prototype.slice.call(e);const i=e.iframe;var a=n(i.contentDocument.getElementsByClassName(te.CSS_SELECTORS.DISMISS_INAPP)),r=n(i.contentDocument.getElementsByClassName(te.CSS_SELECTORS.CLICK_INAPP));if(n=n(i.contentDocument.getElementsByTagName("a")),0===a.length&>.warn(1,t,"No dismiss class items present in this template"),0===r.length&>.warn(1,t,"No click class items present in this template"),e.data.payload&&(-1{var n;t.target&&t.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)&&(n=t.target.dataset.id,Cn(e.campaignMeta,"OSM",{widget_id:n})()),t.target&&t.target.classList.contains(te.CSS_SELECTORS.DISMISS_INAPP)&&(this.dismissInapp(e.campaignMeta.campaignId),t.target.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)||Dn(e.campaignMeta,"OSM"))}));else{for(const t of r)t.addEventListener("click",(t=>{t=t.target.dataset.id,Cn(e.campaignMeta,"OSM",{widget_id:t})()}));for(const t of a)t.addEventListener("click",(()=>{this.dismissInapp(e.campaignMeta.campaignId),t.classList.contains(te.CSS_SELECTORS.CLICK_INAPP)||Dn(e.campaignMeta,"OSM")}))}for(const e of n)"_blank"!==e.getAttribute("target")&&e.setAttribute("target","_parent")}changeAnchorTagReDirectionMethod(e){var t,n=Pi.baseLogTag+".changeAnchorTagReDirectionMethod";try{for(const n of(t=e.contentDocument.getElementsByTagName("a"),Array.prototype.slice.call(t))){var i=n.getAttribute("target"),a=n.getAttribute("href");a&&"_parent"===i&&(n.setAttribute("onclick",`setTimeout(()=>{window.open('${a}','_parent')})`),n.removeAttribute("href"))}gt.log(1,n,"Anchor Tag Href Rendering Changed to onClick for Campaign Frame: "+e.id)}catch(t){gt.error(1,n,"Failed to Change Anchor Tag Href Rendering for Campaign Frame: "+e.id)}}liveCampaignPositionStyling(e,t){var n=Pi.baseLogTag+".liveCampaignPositionStyling";try{e.templateType===wn.BANNER?e.display.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===wn.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),gt.log(1,n,"Added Position Styles for CampaignId: "+e.campaignId)}catch(t){gt.error(1,n,"Failed adding Styles for CampaignId: "+e.campaignId)}}testCampaignPositionStyling(e,t){var n=Pi.baseLogTag+".testCampaignPositionStyling";try{e.templateType===wn.BANNER?e.displaySettings.config.sticky?t.style.position="fixed":t.style.position="absolute":e.templateType===wn.POP_UP&&(t.style.position="fixed","DIV"===t.tagName?t.style.inset="0":t.style.backgroundColor="rgba(99, 99, 99, 0.21)"),gt.log(1,n,"Added Position Styles for CampaignId: "+e.draftId)}catch(t){gt.error(1,n,"Failed adding Styles for CampaignId: "+e.draftId)}}bannerTestCampaignStyling(e,t,n){var i,a=Pi.baseLogTag+".bannerTestCampaignStyling";try{let n,r,o=!0;t?(n=parseInt(getComputedStyle(t.contentDocument.body).height),o=-1e.campaignMeta.templateType===wn.BANNER)).length-1;0<=r;r--)try{if(e[r].isJSONPayloadApproach||e[r].iframe.contentDocument){let a,o=!0;e[r].isJSONPayloadApproach?a=parseInt(getComputedStyle(e[r].osmDivSelector.querySelector(".brz-container")).height):(a=parseInt(getComputedStyle(e[r].iframe.contentDocument.body).height),o=e[r].data.payload&&-1{this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.ATTEMPTED.CAMPAIGN_ATTEMPTED)}))}getImpressionStats(e){return Ni(this,void 0,void 0,(function*(){var t=this.baseLogTag+".getImpressionStats";try{return yield yn.campaingsStatsStore.getItem(e.campaignId)}catch(n){gt.error(1,t,"Error getting impression stats for "+e.campaignId,n)}}))}getLastGlobalInappShown(){return Ni(this,void 0,void 0,(function*(){return yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME)}))}getGlobalDelay(){return Ni(this,void 0,void 0,(function*(){return yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY)}))}filterValidCampaigns(e){return Ni(this,void 0,void 0,(function*(){var t=this.baseLogTag+".filterValidCampaigns",n=e.map((e=>this.getImpressionStats(e)));const i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay();try{const t=yield Promise.all(n);return e.filter(((e,n)=>{if(e.templateType!==wn.SELF_HANDLED){if(!Nn.isCampaignWithinFC(e,t[n]))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MAX_TIMES_SHOWN),!1;if(!Nn.hasCampaignClearedSelfDelay(e,t[n]))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_MIN_DELAY),!1;if(!Nn.hasCampaignClearedGlobalDelay(e,a,i))return this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_GLOBAL_DELAY),!1}return!Nn.isCampaignExpired(e)||(this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_EXPIRED),!1)}))}catch(n){gt.error(1,t,"Error filtering and sorting campaigns",n)}}))}prioritizeMessagingCampaigns(e){return Ni(this,void 0,void 0,(function*(){const t=yield this.filterValidCampaigns(e);if(0{t.campaignId!==e.campaignId&&this.deliveryStats.setStats(t,te.DELIVERY_FUNNEL.PRIORITIZED.CAMPAIGN_PRIORITY_HIGH_PRIORITY_CAMPAIGN_AVAILABLE)})),e}}))}getCampaignTagMap(e){const t={},n=[],i=[];return e.forEach((e=>{null!=e.tag&&(i.indexOf(e.tag)<0&&i.push(e.tag),null==t[e.tag]&&(t[e.tag]=[]),t[e.tag].push(e))})),i.forEach((e=>{if(null!=t[e]){var i=t[e].sort(Nn.comparator);for(let e=0;ethis.getOnsitePayload(e,n)));try{const n=yield Promise.all(a);return e.filter(((e,i)=>{if(n[i]&&n[i].payload&&(e.onsitePayload=n[i],null!=e.tag&&null!=t[e.tag])){if("JSON"!==e.onsitePayload.payloadType)return!0;if((e=>{try{JSON.parse(e)}catch(e){return!1}return!0})(e.onsitePayload.payload))return!0}return!1}))}catch(a){gt.error(1,i,"Error delivering personalization campaigns",a)}}}))}messagingCampaignImpression(e,t){return Ni(this,void 0,void 0,(function*(){var n=this.baseLogTag+".messagingCampaignImpression";if(e)try{var i=yield this.getLastGlobalInappShown(),a=yield this.getGlobalDelay(),r=this.displayManager.getActiveCampaigns();if(!Nn.hasCampaignClearedGlobalDelay(e,a,i))return gt.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_GLOBAL_DELAY);if(!Nn.canCampaignBeRenderedOverExisting(e,r.length))return void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE);if(!ei.getURLFilterResult(e))return gt.warn(1,n,"Can not render "+e.campaignId),void this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_URL_CHANGED);const o=this.displayManager.campaignRenderMap[e.campaignId];return null==o||"MOE_EXIT"!==t&&t!==T?null!=o&&o.isActive()?(this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_ANOTHER_CAMPAIGN_VISIBLE),void gt.warn(1,n,`Can not render ${e.campaignId}, as campaign is already Active.`)):e:(this.deliveryStats.setStats(e,te.DELIVERY_FUNNEL.IMPRESSION.CAMPAIGN_IMPRESSION_MAX_TIMES_SHOWN),void gt.warn(1,n,"Can not render "+e.campaignId))}catch(i){return void gt.error(1,n,"Error delivering messaging campaign",i)}}))}mostEligibleMessagingCampaign(e,t){return Ni(this,void 0,void 0,(function*(){if(0e.templateType===wn.SELF_HANDLED)),c=a.filter((e=>e.templateType!==wn.SELF_HANDLED));0{this.sendDeliveryStats(e)}));if(0{t[e.campaignContext.cid]||(t[e.campaignContext.cid]=e.stats,e.stats={})}));var n={stats:t};this.OnsiteApiClient.callStatsAPI(n,this.batchId)}catch(n){gt.error(1,t,"Error in sending delivery funnel stats",n)}},new(n=(n=void 0)||Promise)((function(e,a){function r(e){try{s(i.next(e))}catch(e){a(e)}}function o(e){try{s(i.throw(e))}catch(e){a(e)}}function s(t){var i;t.done?e(t.value):((i=t.value)instanceof n?i:new n((function(e){e(i)}))).then(r,o)}s((i=i.apply(t,[])).next())}));var t,n,i}setStats(e,t){var n=(new Date).toISOString();e&&(e.stats[t]=e.stats[t]||[],e.stats[t].includes(n)||e.stats[t].push(n))}}var Bi=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Ui=new ht;class Fi{constructor(e){this.initializationPomise=null,this.testDraftInfo=null,this.triggerManager=null,this.displayManager=null,this.onsiteSelfHandledTriggerListeners={},this.funnelManager=null,this.eventTriggerHandler=null,this.deliveryStats=null,this.initData=e,gt.setLogLevel(e.debugLevel),this.OnsiteApiClient=new pi(this.initData)}setLogLevel(e){gt.setLogLevel(e,!1)}isTestCampaignAvailable(){return Bi(this,void 0,void 0,(function*(){const e=Fi.baseLogTag+".isTestCampaignAvailable";window.opener?(window.addEventListener("message",(t=>Bi(this,void 0,void 0,(function*(){var n,i;t.data&&"inapp_test"===t.data.action&&(n=t.data,ki.isValidRawJson(n)?(i=new ki(n),gt.log(1,e,"Valid test campaign data found checking TestCampaign",n),yield this.checkForTestCampaign(i)):gt.error(1,e,"Data is not a valid test campaign",n),Ui.res())}))),!1),window.opener.postMessage("moe_test_osm","*"),setTimeout((()=>Bi(this,void 0,void 0,(function*(){Ui.res()}))),100)):Ui.res()}))}initialize(){const e=Fi.baseLogTag+".initialize";return gt.log(1,e,"Initialising onsite module"),null==this.initializationPomise&&(this.initializationPomise=new Promise((t=>Bi(this,void 0,void 0,(function*(){try{yield yn.initialize(),yield this.isTestCampaignAvailable(),Ui.p.then((()=>Bi(this,void 0,void 0,(function*(){yield this.syncCampaigns();const n=yield Un();var i=this.isExitIntentCampaignFound(n);if(i.length&&(yield this.prefetchExitIntentCampaigns(i)),i=n.filter((e=>null!=e.triggerData)),this.displayManager=new Pi,this.displayManager.onRender((t=>{gt.log(1,e,"Campaign rendered: "+t.campaignId),yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.LAST_INAPP_SHOWN_TIME,new Date)})),null!=this.testDraftInfo&&this.testDraftInfo.draftType===te.DRAFT_CAMPAIGN_TPYES.ONSITE_MESSAGING){gt.log(1,e,"Test campaigns present, will be showing only the test campaign."),gt.log(1,e,"No live campaign will be shown till draft campaign showing");try{gt.log(1,e,"Trying to render draft campaign with id "+this.testDraftInfo.draftId);var a=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo);gt.log(1,e,"Test campaign payload: ",a),a&&this.displayManager.queueDraftCampaign(this.testDraftInfo,a),this.testDraftInfo=null}catch(n){gt.error(1,e,`Error fetching data for test campaign ${this.testDraftInfo.draftId}: `,n)}}else this.deliveryStats=new xi(this.initData),this.triggerManager=new _i(i),this.funnelManager=new Li(this.initData,this.displayManager,this.deliveryStats),this.eventTriggerHandler=new Mi,i=this.eventTriggerHandler.handler.bind(null,this.funnelManager,this.onsiteSelfHandledTriggerListeners,this.handlePersonalizationCampagins.bind(this),this.handleMessagingCampaigns.bind(this)),this.triggerManager.onTrigger(i),Si.setListener(i),yi.setDeliveryStats(this.deliveryStats),Si.setDeliveryStats(this.deliveryStats),yield Si.logDeliveryFunnelForExpiredTimerCampaigns(),yield yi.updateCampaignTimeInSecondaryEventsStore(),yield Si.createNewTimers(),this.triggerManager.startWatching();t(!0)}))))}catch(t){gt.error(1,e,t)}}))))),this.initializationPomise}handleMessagingCampaigns(e){return Bi(this,void 0,void 0,(function*(){var t=Fi.baseLogTag+".handleMessagingCampaigns";e.onsitePayload&&(gt.log(1,t,"Campaign triggered: "+e.campaignId),gt.log(1,t,"Payload for campaign:",e.onsitePayload),this.displayManager.queueLiveCampaign(e,e.onsitePayload))}))}handlePersonalizationCampagins(e){return Bi(this,void 0,void 0,(function*(){const t=Fi.baseLogTag+".handlePersonalizationCampagins";0{null!=e.tag&&(gt.log(1,t,"Personlization Campaign triggered: "+e.campaignId),this.onsiteSelfHandledTriggerListeners[e.tag].forEach((t=>{this.handleSelfHandledCallback(e,e.onsitePayload,t)})))}))}))}logout(){var e;return Bi(this,void 0,void 0,(function*(){var t=Fi.baseLogTag+".logout";if(gt.log(1,t,"Starting module logout"),this.initializationPomise=null,this.displayManager){const t=Object.keys(this.displayManager.campaignRenderMap);null!==(e=this.displayManager.testCampaign)&&void 0!==e&&e.draftId&&t.push(null===(e=this.displayManager.testCampaign)||void 0===e?void 0:e.draftId),t.forEach((e=>{const t=document.getElementById("moe-onsite-campaign-"+e);t&&t.remove()})),this.displayManager.destroy()}this.triggerManager&&this.triggerManager.destory(),yi.destroy(),Si.destroy(),this.displayManager=null,this.funnelManager=null,this.eventTriggerHandler=null,yield Si.deleteAllPendingTimers(),yield yn.clear(),gt.log(1,t,"Starting module logout complete")}))}checkForTestCampaign(e){return Bi(this,void 0,void 0,(function*(){var t=Fi.baseLogTag+".checkForTestCampaign";try{var n=e;null==n?(gt.log(1,t,"No draft campaign found"),this.testDraftInfo=null):(gt.log(1,t,"Found draft campaign: ",n),this.testDraftInfo=n,null==this.testDraftInfo.draftId&&(this.testDraftInfo.draftType=te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON))}catch(n){gt.error(1,t,"Error getting test campaign",n)}}))}getData(e,t){return Bi(this,void 0,void 0,(function*(){const n=Fi.baseLogTag+".getData";null==t&&(gt.warn(1,n,"Moengage.onsite.getData called without a providing a callback."),t=()=>{});try{if(yield this.initializationPomise,null!=this.testDraftInfo){var i;gt.log(1,n,"Fetching test campaign: ",this.testDraftInfo),this.testDraftInfo.draftType===te.DRAFT_CAMPAIGN_TPYES.WEB_PERSONALIZATON&&(i=yield this.OnsiteApiClient.getDraftCampaign(this.testDraftInfo),this.testDraftInfo=null,t(null,{payload:i.payload,click:()=>{gt.log(1,n,"This is a test campaign")},imp:()=>{gt.log(1,n,"This is a test campaign")}}))}else{const i=yield yn.campaingsTagsStore.getItem(e);if(i){const o=yield Promise.all(i.map((e=>Bn(e))));var a=o.filter((e=>null==e.triggerData)),r=yield this.funnelManager.mostEligibleSelfHandledPersonalizationCampaigns(a,e);r&&r.onsitePayload?this.handleSelfHandledCallback(r,r.onsitePayload,t):(gt.error(1,n,"Error fetching campaign payload"),t({message:"There was an error fetching data for this tag"},null))}else gt.warn(1,n,"Could not find any eligible campaign for tag",e),t({message:"Could not find any eligible campaign for tag "+e},null)}}catch(i){gt.error(1,n,"Error getting campaign",i)}}))}registerCallback(e,t){return Bi(this,void 0,void 0,(function*(){var n=Fi.baseLogTag+".registerCallback";try{yield this.initializationPomise,null==this.onsiteSelfHandledTriggerListeners[e]?this.onsiteSelfHandledTriggerListeners[e]=[t]:this.onsiteSelfHandledTriggerListeners[e].push(t)}catch(t){gt.error(1,n,"Error setting callback for tag",e),gt.error(1,n,"Error stack:",t)}}))}handleSelfHandledCallback(e,t,n){return Bi(this,void 0,void 0,(function*(){var i=Fi.baseLogTag+".handleSelfHandledCallback";if(e.campaignContext=t.campaignContext,"JSON"===t.payloadType)try{t.payload=JSON.parse(t.payload);var a=_e(e,"triggerData.trigger_delay.delayInSeconds",0)||0;setTimeout((()=>{Pn(e,"WP"),n(null,{payload:t.payload,click:t=>{Cn(e,"WP",t)()},imp:On(e,"WP")})}),1e3*a)}catch(r){a=`Payload for campaign_id ${e.campaignId} is not a valid JSON`,gt.error(1,i,a),gt.error(1,i,"Payload provided:",t.payload),n({message:a},null)}else Pn(e,"WP"),n(null,{payload:t.payload,click:t=>{Cn(e,"WP",t)()},imp:On(e,"WP")})}))}syncCampaigns(){return Bi(this,void 0,void 0,(function*(){var e=Fi.baseLogTag+".syncCampaigns";try{(yield this.shouldClearMetaStorage())&&(yield yn.campaingsMetaStore.clear(),yield this.rebuildTagStore()),(yield this.shouldSaveRemoteCampaigns())&&(yield this.saveRemoteCampaigns())}catch(t){gt.error(1,e,"Error getting remote campaigns: ",t)}}))}shouldClearMetaStorage(){return Bi(this,void 0,void 0,(function*(){return(yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION))!==Xe().getSdkVersion()}))}shouldSaveRemoteCampaigns(){var e;return Bi(this,void 0,void 0,(function*(){var t=Fi.baseLogTag+".shouldSaveRemoteCampaigns",n=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION),i=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.LAST_META_CALL_TIME),a=(i=new Date(i),(new Date).getTime());return null==i||a-i>te.META_REFRESH_TIME||(gt.remoteLogTracking(1,"info",t,"Last fetch was less than 15 mins ago at ",i),n!==Xe().getSdkVersion()?(gt.remoteLogTracking(1,"info",t,"Version change detected. Will proceed to fetch latest campaigns"),!0):!(!(n=yield yn.serviceMetaStore.getItem(te.STORES.SERVICE_META.KEYS.UNIQUE_ID))||n===(null===(e=Fe.get(r.USER_DATA))||void 0===e?void 0:e.deviceUuid)||(gt.remoteLogTracking(1,"info",t,"Unique device id change detected. Will proceed to fetch latest campaigns"),0)))}))}saveRemoteCampaigns(){return Bi(this,void 0,void 0,(function*(){var e=Fi.baseLogTag+".saveRemoteCampaigns";yield yn.campaingsMetaStore.clear(),yield yn.exitIntentCampaignStore.clear();var t=yield this.OnsiteApiClient.getCampaignsMeta();null!=t&&(yield this.addCampaignsToDB(t.campaignsMeta),gt.log(1,e,"Inapp campaigns meta saved!")),yield yi.pruneRemovedCampaigns(),yield yi.removeStaleTriggeringPrimaryEventCampaigns(),yield yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.GLOBAL_DELAY,t.globalDelayBetweenInapps),yield yn.serviceMetaStore.setItem(te.STORES.SERVICE_META.KEYS.LAST_FETCH_SDK_VERSION,Xe().getSdkVersion())}))}addCampaignsToDB(e){return Bi(this,void 0,void 0,(function*(){var t=Fi.baseLogTag+".addCampaignsToDB";gt.log(1,t,`Adding/Updating ${e.length} campaigns in DB`,e.map((e=>e.campaignId)));try{yield Promise.all(e.map((e=>yn.campaingsMetaStore.setItem(e.campaignId,e)))),yield this.rebuildTagStore()}catch(e){gt.error(1,t,"Error saving remote campaigns:",e)}}))}rebuildTagStore(){return Bi(this,void 0,void 0,(function*(){var e=Fi.baseLogTag+".rebuildTagStore";try{yield yn.campaingsTagsStore.clear();var t=yield Un();const e={};for(const n of t)null!=n.tag&&(null==e[n.tag]&&(e[n.tag]=[]),e[n.tag].push(n.campaignId));const n=[];yield yn.campaingsTagsStore.clear();for(const t in e)e.hasOwnProperty(t)&&n.push(yn.campaingsTagsStore.setItem(t,e[t]));yield Promise.all(n)}catch(t){gt.error(1,e,"Error updating tags store:",t)}}))}isExitIntentCampaignFound(e){return e.filter((e=>e.templateType!==wn.SELF_HANDLED&&Mn(e,_)))}prefetchExitIntentCampaigns(e){return Bi(this,void 0,void 0,(function*(){var t=Fi.baseLogTag+".prefetchExitIntentCampaigns";const n=yield Jt.createEvent("MOE_EXIT",[]),i=(yield Ln(e)).filter((e=>ei.getFilterResult(n,e)));if(!i||!i.length)return gt.log(1,t,"Exit intent campaign not eligible to prefetch"),!1;{const e=yield xn(i[0]);if(!e||!e.onsitePayload||e.onsitePayload.updatedTime.getTime()!==i[0].updatedTime.getTime()){var a=i[0].campaignId;const e=yield this.OnsiteApiClient.getCampaignPayload(i[0]);e.payload||e.htmlJsonPayload?(e.updatedTime=i[0].updatedTime,yield yn.exitIntentCampaignStore.setItem(a,e),gt.log(1,t,"Exit intent campaign prefetched: "+a)):e.error&&e.reason&&(yield yn.exitIntentCampaignStore.setItem(a,e))}}}))}refresh(){var e;return Bi(this,void 0,void 0,(function*(){null!==(e=qi.onsite.initData)&&void 0!==e&&e.appId&&(yield Qi(),Xi())}))}sendDelayCampaignStats(){return Bi(this,void 0,void 0,(function*(){var e=Fi.baseLogTag+".sendDelayCampaignStats",t=Object.keys(this.displayManager.campaignRenderMap).filter((e=>!this.displayManager.campaignRenderMap[e].campaignRendered));0{var e;const t=window.Moengage;if(t.onsite){if(t.onsite.displayManager){t.onsite.triggerManager&&null!==(e=null===(e=t.onsite.triggerManager.primaryEventsHash)||void 0===e?void 0:e.MOE_PAGE_SCROLL)&&void 0!==e&&e.length&&window.removeEventListener("scroll",t.onsite.triggerManager.getScrollListenerCallback());const n=t.onsite.displayManager,i=Object.keys(n.campaignRenderMap);t.onsite.sendDelayCampaignStats&&t.onsite.sendDelayCampaignStats(),i.forEach((e=>{document.getElementById("moe-onsite-campaign-"+e)&&document.getElementById("moe-onsite-campaign-"+e).remove(),n.campaignRenderMap[e].isActive()&&n.dismissInapp(e),clearTimeout(n.campaignRenderMap[e].delayTimer),delete n.campaignRenderMap[e],n.campaignRenderOrder=n.campaignRenderOrder.filter((t=>t!==e))})),setTimeout((()=>{t.onsite.triggerManager&&(ze()?t.onsite.triggerManager.windowEventManager.isPopStateEventBound&&(t.onsite.triggerManager.windowEventManager.setHistoryState(),t.onsite.triggerManager.windowEventManager.isExitIntentShown=!1,t.onsite.triggerManager.windowEventManager.scrollExitIntentInterval=null):document.removeEventListener("mouseout",t.onsite.triggerManager.windowEventManager.exitIntentListener))}),0)}$t.resetListeners(),t.onsite.initializationPomise=null,t.onsite.initialize&&t.onsite.initialize()}})(),window.MoeFocusHandler&&window.MoeFocusHandler(),window.Moengage.shouldClearPrevEvents=(new Date).getTime(),Xt.clear(),Xt.clearListeners(),qi.track_page_view();var i=qi.onsite.triggerManager;0<(null===(e=null==i?void 0:i.exitIntentCampaigns)||void 0===e?void 0:e.length)&&ze()&&null!==(t=null==i?void 0:i.windowEventManager)&&void 0!==t&&t.onMobileScrollAndExit(i.onExit),nn.getWebSDKSettings().then((e=>{e.isDomainLevelStorage&&Fe.copyKeysFromCookie(),null!=e&&e.configs.isCardsModuleEnabled&&qi.cards&&(qi.cards.resetCards(ve),qi.cards.displayManager.closeIframe(),qi.cards.displayManager.addCardsInboxListener()),null!=e&&e.configs.isWebPersonalisationModuleEnabled&&(null!==(e=window.MoeWebP)&&void 0!==e&&e.getLiveExperiences(),gt.log(1,n,"webP sync function called"))})).catch((e=>{gt.error(1,n,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}Fi.baseLogTag="MoeOnsite",window[te.OSM_MODULE]=Fi,window.MoeOsm=(gt.log(1,"OsmFunctions","Osm Functions for tracking user behaviour"),{trackEvent:(e,t,n,i)=>(e=wi(e),{}.constructor===n.constructor&&e?(n=Object.assign(Object.assign({campaign_id:e.campaignId,campaign_name:e.campaignName},e.campaignContext),n),window.Moengage.track_event(t,n)):Promise.resolve()),trackClick:(e,t)=>(e=wi(e))?window.Moengage.onsite.displayManager.clickTracker(e,"OSM",{widget_id:t})():Promise.resolve(),trackDismiss:(e,t=!1)=>(e=wi(e))?window.Moengage.onsite.displayManager.dismissEvent(e,"OSM",t):Promise.resolve(),setAlias:e=>window.Moengage.update_unique_user_id(e),setUniqueId:e=>window.Moengage.add_unique_user_id(e),destroySession:()=>window.Moengage.destroy_session(),setUserName:e=>window.Moengage.add_user_name(e),setFirstName:e=>window.Moengage.add_first_name(e),setLastName:e=>window.Moengage.add_last_name(e),setEmailId:e=>window.Moengage.add_email(e),setMobileNumber:e=>window.Moengage.add_mobile(e),setGender:e=>window.Moengage.add_gender(e),setBirthDate:e=>window.Moengage.add_birthday(e),setUserAttribute:(e,t)=>window.Moengage.add_user_attribute(e,t),dismissMessage(e){setTimeout((()=>{window.Moengage.onsite.displayManager.dismissInapp(""+e)}),100)},showPushOptIn:e=>window.Moengage.call_web_push(e),copyText:e=>new Promise(((t,n)=>{e||n();const i=document.querySelector(e);i.textContent?navigator.clipboard.writeText(i.textContent):(i.select(),i.setSelectionRange(0,99999),navigator.clipboard.writeText(i.value)),t(null)}))});class Hi{constructor(){this.getDeviceUniqueId=e=>{window.addEventListener(x,(t=>{t.detail.name===B.DEVICE_UUID&&(t=t.detail.data,e(t))}))}}onUpdateDeviceId(e){this.getDeviceUniqueId(e)}trackClick(e,t){return Hi.track("MOE_WEBP_MESSAGE_CLICKED",e,t)}trackImpression(e){return Hi.track("MOE_WEBP_MESSAGE_SHOWN",e)}static track(e,t,n){var i=Hi.baseLogTag+".track";if("string"==typeof t)try{t=JSON.parse(t)}catch(e){return void gt.error(2,i,"Error parsing JSON string:",e)}var a=null===(a=null==t?void 0:t.cid)||void 0===a?void 0:a.split("_")[0];if(!a)return Promise.reject();try{return Xe()?(gt.log(1,i,e+": Event Tracked"),Xe().track_event(e,Object.assign({campaign_id:a},t))):(window.moengage_q=window.moengage_q||[]).push({f:"track_event",a:[e,Object.assign(Object.assign({campaign_id:a},t),n)]}),Promise.resolve()}catch(e){gt.error(2,i,"Failed Tracking expression",e)}}}Hi.baseLogTag="Web Personalisation Tracking";class Gi{trackClick(e){return Gi.track("MOE_LANDING_PAGE_CLICKED",e)}trackImpression(e){return Gi.track("MOE_LANDING_PAGE_SHOWN",e)}trackFormSubmit(e,t){return Gi.track("MOE_RESPONSE_SUBMITTED",e,t)}trackEvent(e,t,n){return Gi.track(t,e,n)}static track(e,t,n){const i=Gi.baseLogTag+".track";if("string"==typeof t)try{t=JSON.parse(t)}catch(n){return void gt.error(2,i,"Error parsing JSON string:",n)}if(n){if("string"==typeof n)try{n=JSON.parse(n)}catch(n){return void gt.error(2,i,"Error parsing attributes JSON string:",n)}t=Object.assign(Object.assign({},n),t)}try{return Xe()?(gt.log(1,i,e+": Event Tracked"),Xe().track_event(e,Object.assign({},t))):(window.addEventListener(x,(n=>{if(n.detail.name===B.MOE_INIT)return gt.log(1,i,e+": Event Tracked"),Xe().track_event(e,Object.assign({},t))})),Promise.resolve())}catch(n){gt.error(2,i,"Failed Tracking expression",n)}}}Gi.baseLogTag="Landing Pages Tracking";var Ki=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};const Vi="MoEngage";let ji=new ht,Yi=new ht;const zi={getData:(e,t)=>{nn.getWebSDKSettings().then((n=>{ji.p.then((n=>{n.getData(e,t)}))})).catch((e=>{}))},registerCallback:(e,t)=>{nn.getWebSDKSettings().then((n=>{ji.p.then((n=>{n.registerCallback(e,t)}))})).catch((e=>{}))}};class qi{static callWebPush(e){const t=Vi+".callWebPush";nn.getWebSDKSettings().then((n=>{var i,a,r,o,s,l,c;n.isConfigured?n.optInConfig.type===Nt.TYPE.SELF_HANDLED?(gt.log(1,t,"Starting web push functions"),null!=e&&(xe.setSoftAskConfig(e),i=_e(e,"soft_ask_display_callback",null),a=_e(e,"soft_ask_allow_callback",null),r=_e(e,"soft_ask_block_callback",null),o=_e(e,"hard_ask_allow_callback",null),s=_e(e,"hard_ask_dismiss_callback",null),l=_e(e,"hard_ask_block_callback",null),c=U,sn.addCallback(c.SOFT_ASK_SHOWN,i),sn.addCallback(c.SOFT_ASK_ALLOWED,a),sn.addCallback(c.SOFT_ASK_DISMISSED,r),sn.addCallback(c.HARD_ASK_ALLOWED,o),sn.addCallback(c.HARD_ASK_DISMISSED,s),sn.addCallback(c.HARD_ASK_DENIED,l)),St.getInstance().then((e=>{new vn(n,e).callWebPush()}))):gt.warn(1,t,"This feature can only be used when you have chosed self-handled approach in the dashboard. You can check dashboard here:",z):gt.log(1,t,"Web push settings not configured on dashboard yet. To start web push subscriptions, please configure the settings on dashboard.")})).catch((e=>{gt.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")}))}static showNotification(e){nn.getWebSDKSettings().then((t=>{St.getInstance().then((n=>{new vn(t,n).showNotification(e)}))})).catch((e=>{}))}static getSdkVersion(){return"2.50.0"}static setDebugLevel(e){return Ki(this,void 0,void 0,(function*(){const t=Vi+".setDebugLevel";try{"number"==typeof e&&(!xe.get().disableOnsite&&qi.onsite.setLogLevel&&qi.onsite.setLogLevel(e),nn.getWebSDKSettings().then((t=>{null!=t&&t.configs.isCardsModuleEnabled&&qi.cards&&qi.cards.setLogLevel(e),null!=t&&t.configs.isWebPersonalisationModuleEnabled&&window.MoeWebP&&window.MoeWebP.setLogLevel&&window.MoeWebP.setLogLevel(e),gt.setLogLevel(e,!0)})).catch((n=>{gt.setLogLevel(e,!0),gt.error(1,t,"Error in getting Web SDK Settings. This might indicate that the App is blocked.")})))}catch(e){gt.error(0,t,"Error changing log level:",e)}}))}static vitals(){var e=Tt.getSync();return{deviceUuid:e.deviceUuid,userDetails:e,pushToken:Fe.get(r.PUSH_TOKEN),softAskStatus:Fe.get(r.SOFT_ASK_STATUS),hardAskStatus:Fe.get(r.HARD_ASK_STATUS)}}static help(){var e=Vi+".help";gt.log(0,e,"Moengage Dashboard - ",Y.MOE_DASHBOARD);for(const t in Y)Y.hasOwnProperty(t)&>.log(0,e,t,"-",Y[t])}static track_event(e,t){return Qt.track(e,t)}static add_unique_user_id(e){return Ki(this,void 0,void 0,(function*(){return yield fn.login(e)}))}static update_unique_user_id(e){return fn.updateUniqueId(e)}static add_user_attribute(e,t){return fn.addAttribute(e,t)}static add_first_name(e){return fn.addAttribute("first_name",e)}static add_last_name(e){return fn.addAttribute("last_name",e)}static add_email(e){return fn.addAttribute("email",e)}static add_mobile(e){return fn.addAttribute("mobile",e)}static add_user_name(e){return fn.addAttribute("name",e)}static add_gender(e){return fn.addAttribute("gender",e)}static add_birthday(e){return fn.addAttribute("birthday",e)}static destroy_session(){return qi.user.logout()}static call_web_push(e){qi.callWebPush(e)}static getBranch(){return"dev"}static track_page_view(){return Qt.track(l,{timestamp:Number(Date.now())}),Qt.track(c,{timestamp:Number(Date.now())})}static handle_page_change(){Wi()}}qi.user=fn,qi.event=Qt,qi.device=class{static getUuid(){return Fe.get(r.USER_DATA).deviceUuid}static getPushToken(){return Fe.get(r.PUSH_TOKEN)}static getPermissionState(e){return new Promise(((t,n)=>{nn.getWebSDKSettings().then((i=>{St.getInstance().then((a=>{new vn(i,a).getPermissionState().then((n=>{t(n),e&&e(null,n)})).catch((t=>{n(t),e&&e(t,null)}))}))})).catch((t=>{n(t),e&&e(t,null)}))}))}},qi.onsite=zi,qi.reports=zt.reports,qi.remoteLogs=zt,qi.web_p=new Hi,qi.landingPages=new Gi;var $i=()=>{};const Ji={track_event:$i,add_user_attribute:$i,add_first_name:$i,add_last_name:$i,add_email:$i,add_mobile:$i,add_user_name:$i,add_gender:$i,add_birthday:$i,destroy_session:$i,add_unique_user_id:$i,moe_events:$i,location_type_attribute:$i,call_web_push:$i,setDebugLevel:$i};function Xi(){var e;null!==(e=null===(e=qi.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId||(e=xe.get(),qi.onsite=new Fi(e),ji.res(qi.onsite),null!==(e=qi.onsite)&&void 0!==e&&e.initialize())}function Qi(){var e;return Ki(this,void 0,void 0,(function*(){null!==(e=null===(e=qi.onsite)||void 0===e?void 0:e.initData)&&void 0!==e&&e.appId&&(gt.log(1,"Moengage.disableOnsiteApi","logging out from inapp module"),yield qi.onsite.logout(),ji=new ht,qi.onsite=zi)}))}const Zi="moe_cards",ea={STORE_NAME:"campaigns"},ta={STORE_NAME:"meta",LAST_FETCH_SDK_VERSION:"last_fetch_sdk_version",LAST_META_CALL_TIME:"last_meta_call_time",UNIQUE_ID:"unique_id",LAST_SYNC_CARDS:"last_sync_cards",SYNC_INTERVALS:"sync_intervals",SHOW_ALL_TAB:"show_all_tab"};var na=function(e,t,n,i){return new(n=n||Promise)((function(a,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?a(e.value):((t=e.value)instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))};class ia{static initialize(){return na(this,void 0,void 0,(function*(){var e;return null==ia.ready&&(ia.campaignStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:Zi,storeName:ea.STORE_NAME}),ia.metaStore=be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:Zi,storeName:ta.STORE_NAME}),e=[ia.campaignStore.ready(),ia.metaStore.ready()],ia.ready=Promise.all(e)),ia.ready}))}static clear(){return na(this,void 0,void 0,(function*(){var e=ia.baseLogTag+".clear";try{yield ia.initialize(),yield Promise.all([ia.campaignStore.clear(),ia.metaStore.clear()]);var t=[ia.campaignStore.ready(),ia.metaStore.ready()];ia.ready=Promise.all(t)}catch(t){gt.error(1,e,"Error clearing cards stores:",t)}return ia.ready}))}}let aa;function ra(e){const t="Pre-Initialization";if(!(e=>{const t=["bot","spider","crawler","crawling","Applebot","PetalBot","pingbot","proximic","AdsBot-Google","Googlebot","Cincraw","SnapchatBot","Snapchat-Proxy/1.0","SnapchatAds","Snapchat-Ads/1.0","YandexRenderResourcesBot","bingbot","slurp","MicrosoftPreview","Baiduspider","HeadlessChrome",...Array.isArray(e)?e:[]];return new RegExp(t.join("|"),"i").test(navigator.userAgent)})(null==e?void 0:e.bots_list)){var n=Xe();return n&&0{$t.broadcastToWindow({topic:x,name:B.MOE_INIT,data:xe.get()}),qe()===fe.WEB&&oa(),gt.setLogLevel(xe.get().debugLevel),gt.log(1,t,"Script loaded!"),gt.customLabel(1,t,"SDK Version","2.50.0"),0{$t.broadcastToWindow({topic:x,name:B.MOE_INIT_COMPLETED})}))})),e=window.moengage_object||"Moengage",window[e]=qi,qi):(gt.error(1,t,"App Id not specified. Please check docs page to complete the integration - ",Y.WEBSDK_DOCS),Ji))}gt.error(1,t,"Bot detected, Can't initialise the MoEngage Web SDK")}ia.baseLogTag="MOE_CARDS_STORES";const oa=()=>{be.createInstance({driver:[be.INDEXEDDB,be.WEBSQL,be.LOCALSTORAGE],name:J,storeName:X}).clear()},sa=()=>new Promise((e=>{"complete"!==window.document.readyState?window.addEventListener("load",(()=>{e(!0)})):e(!0)}));window&&(window.moe=ra,window.moeBannerText="banner",window[ee]=Xt);const la=()=>{try{var e=localStorage.getItem("moe_segment_cluster"),t=localStorage.getItem("moe_segment_sw_path"),n=localStorage.getItem("moe_segment_sw_scope"),i=localStorage.getItem("moe_segment_enable_spa"),a=localStorage.getItem("moe_segment_disable_onsite"),r=localStorage.getItem("moe_segment_disable_cookies"),o=localStorage.getItem("moe_segment_cards");const l={};e&&(l.cluster=e),t&&(l.swPath=t),n&&(l.swScope=n),i&&(l.enableSPA="true"===i),r&&(l.disableCookies="true"===r),a&&(l.disable_onsite="true"===r),o&&(l.cards=JSON.parse(o));var s=e||t||n||i||r||a||o;return s&>.log(1,".isSegmentDataFound","Data found for segment initialisation",l),!!s&&l}catch(e){return!1}},ca=()=>{const e="Initialization";return new Promise((t=>nn.getWebSDKSettings().then((n=>(ct.setRemoteLogging(n),n.isDomainLevelStorage&&(Fe.isSharedWithCookie=!0,Fe.copyKeysFromCookie()),pn.addBeforeUnloadListeners(n),(n.configs.isBatchingEnabled||n.configs.remoteLogTracking)&&(zt.init(n),gt.log(1,e,"Enabled Batching for "+(n.configs.isBatchingEnabled?"Event Tracking":"")+(n.configs.remoteLogTracking?", Remote Logs Tracking":""))),Tt.get().then((i=>{if(un.get().deviceToLogout===i.deviceUuid)return gt.remoteLogTracking(1,"info",e,"User was not able to logout last time. Completing the logout now and starting new session."),qi.user.logout();i.deviceAdded&&nn.onDeviceAdd.res(),n.isPushSubBilling&>.warn(1,e,"You are under push subscriber based billing plan. We are only tracking users with an email, phone number or have subscribed to web push. All user attributes and events will be stored in a queue till we receive either of the properties.");var a=new ft;(new pn).onWindowVisibilityChange(a.handleBrowserInactivity),gt.customLabel(1,e,"Device UUID",i.deviceUuid),gt.customLabel(1,e,"Device Added",i.deviceAdded),$t.broadcastToWindow({topic:x,name:B.SETTINGS_FETCHED,data:n}),$t.broadcastToWindow({topic:x,name:B.DEVICE_UUID,data:i.deviceUuid}),n.isPushSubBilling||i.deviceAdded||nn.deviceAdd(),qi.track_page_view(),on.clear(r.Q.DEVICE),on.clear(r.Q.REPORT),xe.get().enableSPA&&!aa&&ga(),St.getInstance().then((t=>{var i,a;let o;n.isWebPushEnabled&&!xe.get().disableWebPush&&(o=new vn(n,t));var s,l=!(null!==(i=null===(l=window.MoeWebP)||void 0===l?void 0:l.isEditorModeEnabled)&&void 0!==i&&i.call(l));o&&Ct(n,t)&&l?(0<=[Nt.TYPE.ONE_CLICK,Nt.TYPE.TWO_STEP].indexOf(n.optInConfig.type)?o.callWebPush():(gt.log(1,e,"Self handled setting. Will show opt-in on manual invocation, if required."),o.getPermissionState().then((t=>{var n=Fe.get(r.PUSH_TOKEN);(t===Zt.GRANTED||null!=n&&t===Zt.DENIED)&&(t===Zt.GRANTED&>.log(1,e,"Notification permission already granted. Proceeding to subscribe the user"),o.callWebPush())})).catch((t=>{gt.warn(1,e,"Cannot get permission state: ",t)}))),o.trackPushOptedDeviceAttribute()):Ee.indexOf(t.name)<0?gt.warn(1,e,"Web push not supported on this browser. Supported browsers are:\n\t\t1. Google Chrome\n\t\t2. Mozilla Firefox\n\t\t3. Opera\n\t\t4. Edge\n\t\t5. Safari 16 and above + macOS 13 and above"):gt.warn(1,e,"Web push feature not enabled for current environment"),!xe.get().disableOnsite&&l?nn.onDeviceAdd.p.then((()=>{Xi()})):gt.warn(1,e,"Onsite is disabled in this page since `disableOnsite: true` is passed during initialization."),null!=n&&n.configs.isCardsModuleEnabled&&null!==(a=xe.get().cards)&&void 0!==a&&a.enable&&l?(s=n,Sn.loadModule(ne.CARDS).then((e=>{Yi.res(e),e.initialize(s),qi.cards=e})).catch((e=>{Yi.rej(e)}))):ia.clear(),da()})),t(!0)}))))).catch((n=>{gt.error(1,e,"Error in getting Web SDK Settings. This might indicate that the App is blocked."),t(!1)}))))},da=()=>{const e="Moengage.clearWindowQ";sa().then((()=>{try{var t=window.moengage_object||"Moengage";if(window[t]&&window.moengage_q){let i=window.moengage_q;if(window.moengage_q=[],i&&0{const e="startSpaUrlHandler";let t=document.location.href;(()=>{aa=!0,gt.log(1,e,"Start listening to URL changes");const n=document.querySelector("body"),i=new MutationObserver((n=>{n.forEach((n=>{t===document.location.href||document.location.href.includes("moe-card=1")||(t=document.location.href,gt.log(1,e,"URL Change detected",t),Wi())}))}));i.observe(n,{childList:!0,subtree:!0})})()},ua={clearWindowQ:da,startSpaUrlHandler:ga,isSegmentDataFound:la,clearEventsFromIDB:oa,moeInit:ra,windowLoaded:sa}})()})(); \ No newline at end of file