@customerio/cdp-analytics-browser 0.3.6 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/generated/version.js +1 -1
- package/dist/pkg/generated/version.js +1 -1
- package/dist/types/core/buffer/index.d.ts +1 -1
- package/dist/types/generated/version.d.ts +1 -1
- package/dist/umd/646.js +1 -1
- package/dist/umd/646.js.gz +0 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.gz +0 -0
- package/dist/umd/standalone.js +1 -1
- package/dist/umd/standalone.js.gz +0 -0
- package/package.json +3 -3
- package/src/generated/version.ts +1 -1
|
@@ -75,7 +75,7 @@ export declare class AnalyticsBuffered implements PromiseLike<[Analytics, Contex
|
|
|
75
75
|
register: (...args: import("../plugin").Plugin[]) => Promise<Context>;
|
|
76
76
|
deregister: (...args: string[]) => Promise<Context>;
|
|
77
77
|
user: () => Promise<import("../user").User>;
|
|
78
|
-
readonly VERSION = "0.3.
|
|
78
|
+
readonly VERSION = "0.3.8";
|
|
79
79
|
private _createMethod;
|
|
80
80
|
/**
|
|
81
81
|
* These are for methods that where determining when the method gets "flushed" is not important.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.3.
|
|
1
|
+
export declare const version = "0.3.8";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/umd/646.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_customerio_cdp_analytics_browser=self.webpackChunk_customerio_cdp_analytics_browser||[]).push([[646],{1369:function(e,t,n){"use strict";n.d(t,{Z:function(){return We}});class s{on(e,t){var n=this[e];n?n.push(t):this[e]=[t]}dispatch(e,t){var n=this[e];n&&n.forEach((e=>e(t)))}}function i(e){We.config&&We.config.logging&&console.log(`Gist: ${e}`)}var a,o=new Uint8Array(16);function r(){if(!a&&!(a="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(o)}var c=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var u=function(e){return"string"==typeof e&&c.test(e)},d=[],g=0;g<256;++g)d.push((g+256).toString(16).substr(1));var l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[e[t+15]]).toLowerCase();if(!u(n))throw TypeError("Stringified UUID is invalid");return n};var m=function(e,t,n){var s=(e=e||{}).random||(e.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t){n=n||0;for(var i=0;i<16;++i)t[n+i]=s[i];return t}return l(s)};const f="gist.web.isPersistingSession";function h(e,t,n=null){var s=n;s||(s=new Date).setDate(s.getDate()+365);const i={value:t,expiry:s};y().setItem(e,JSON.stringify(i))}function p(e){const t=y().getItem(e);if(!t)return null;const n=JSON.parse(t),s=new Date,i=new Date(n.expiry),a=e.startsWith("gist.web.message.broadcasts")&&!e.endsWith("shouldShow")&&!e.endsWith("numberOfTimesShown")||e.startsWith("gist.web.message.user")&&!e.endsWith("seen"),o=new Date(s.getTime()+366e4);return a&&i.getTime()>o.getTime()||s.getTime()>i.getTime()?(w(e),null):n.value}function w(e){y().removeItem(e)}function v(){const e=sessionStorage.getItem(f);return null===e?(sessionStorage.setItem(f,"true"),!0):"true"===e}function y(){return v()?localStorage:sessionStorage}const b="gist.web.userQueueUseSSE",S="gist.web.activeSSEConnection";let I,E=30;const $={RENDERER_HOST:"https://code.gist.build",ENGINE_API_ENDPOINT:{prod:"https://engine.api.gist.build",dev:"https://engine.api.dev.gist.build",local:"http://engine.api.local.gist.build:82"},GIST_QUEUE_API_ENDPOINT:{prod:"https://consumer.cloud.gist.build",dev:"https://consumer.cloud.dev.gist.build",local:"http://api.local.gist.build:86"},GIST_QUEUE_REALTIME_API_ENDPOINT:{prod:"https://realtime.cloud.gist.build",dev:"https://realtime.cloud.dev.gist.build",local:"http://api.local.gist.build:3000"},GIST_VIEW_ENDPOINT:{prod:"https://renderer.gist.build/3.0",dev:"https://renderer.gist.build/3.0",local:"http://app.local.gist.build:8080/web"},getSdkId:function(){return I||(I=m()),I},useSSE:function(){return p(b)??!1},setUseSSEFlag:function(e){h(b,e,new Date((new Date).getTime()+6e4)),i(`Set user uses SSE to "${e}"`)},removeActiveSSEConnection:function(){w(S)},setActiveSSEConnection:function(){h(S,$.getSdkId(),new Date((new Date).getTime()+$.getSSEHeartbeat()))},hasActiveSSEConnection:function(){return p(S)??!1},isSSEConnectionManagedBySDK:function(){return p(S)===$.getSdkId()},getSSEHeartbeat:function(){return 1e3*(E+5)},setSSEHeartbeat:function(e){e&&e>0&&(E=e)}};function x(){const e=$.GIST_QUEUE_API_ENDPOINT[We.config.env],t={"X-CIO-Site-Id":We.config.siteId,"X-CIO-Client-Platform":"web"},n=O();async function s(n,s={}){const i=e+n,a=new AbortController,o=setTimeout((()=>a.abort()),5e3);try{const e=await fetch(i,{method:s.method||"GET",headers:{...t,...s.headers||{}},body:s.method&&"GET"!==s.method.toUpperCase()?s.body:void 0,signal:a.signal});clearTimeout(o);const n=e.headers.get("content-type")?.includes("application/json"),r=n?await e.json():await e.text(),c=Object.fromEntries(e.headers.entries());if(e.status<200||e.status>=400)throw{response:{status:e.status,data:r,headers:c}};return{status:e.status,headers:c,data:r}}catch(e){throw clearTimeout(o),e.response||(e.response={status:0,data:e.message||"Unknown error"}),e}}return null!=n&&(t["X-Gist-Encoded-User-Token"]=n),s.post=(e,t={},n={})=>s(e,{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json",...n.headers||{}}}),s}const T="gist.web.userLocale";var D=600,k=!1;const C="gist.web.userQueueNextPullCheck",M="gist.web.sessionId";async function R(){var e;try{if(!k){k=!0;var t={"X-Gist-User-Anonymous":N(),"Content-Language":null!==p(T)?p(T):navigator.language};e=await x().post(`/api/v3/users?sessionId=${q()}`,{},{headers:t})}}catch(t){t.response?e=t.response:i(`Error getting user queue: ${t}`)}finally{k=!1,function(e){if(e&&e.headers){var t=e.headers["x-gist-queue-polling-interval"];t&&t>0&&(D=t)}var n=new Date((new Date).getTime()+1e3*D);h(C,D,n)}(e),function(e){const t="true"===e?.headers?.["x-cio-use-sse"]?.toLowerCase();$.setUseSSEFlag(t)}(e)}return e}function q(){var e=p(M);return e||(e=m()),h(M,e,new Date((new Date).getTime()+18e5)),e}const L="gist.web.userToken",P="gist.web.usingGuestUserToken",A="gist.web.guestUserToken";function N(){return null!==p(P)}function U(){return p(L)}function _(){if(null===U()){var e=p(A);null==e&&(e=m(),h(A,e),i(`Set guest user token "${e}" with expiry date set to 1 year from today`)),h(L,e),h(P,!0),i(`Using anonymous session with token: "${e}"`)}}async function W(){var e=U();return null===e?null:await async function(e){const t=(new TextEncoder).encode(e),n=await crypto.subtle.digest("SHA-256",t),s=Array.from(new Uint8Array(n));return s.map((e=>e.toString(16).padStart(2,"0"))).join("")}(e)}function O(){var e=U();return null===e?null:btoa(e)}function H(e){const t={isEmbedded:!1,elementId:"",hasRouteRule:!1,routeRule:"",position:"",hasPosition:!1,shouldScale:!1,campaignId:null,messageWidth:414,overlayColor:"#00000033",persistent:!1,exitClick:!1,hasCustomWidth:!1},n=e?.properties?.gist;return n?{isEmbedded:!!n.elementId,elementId:n.elementId||"",hasRouteRule:!!n.routeRuleWeb,routeRule:n.routeRuleWeb||"",position:n.position||"",hasPosition:!!n.position,shouldScale:!!n.scale,campaignId:n.campaignId??null,messageWidth:n.messageWidth>0?n.messageWidth:t.messageWidth,hasCustomWidth:n.messageWidth>0,overlayColor:n.overlayColor||t.overlayColor,persistent:!!n.persistent,exitClick:!!n.exitClick}:t}var G=["x-gist-top","x-gist-floating-top","x-gist-bottom","x-gist-floating-bottom","x-gist-floating-bottom-left","x-gist-floating-bottom-right","x-gist-floating-top-left","x-gist-floating-top-right"];const V=["x-gist-top","x-gist-bottom","x-gist-floating-top","x-gist-floating-bottom"];function z(e,t,n,s){var a=Y(e);if(a){var o=K(n.instanceId);a.classList.add(o);var r=H(n),c=r.messageWidth+"px";V.includes(e)&&!r.hasCustomWidth&&(c="100%"),G.includes(e)&&(a.style.width=c),j(e)||(a.style.height="0px"),a.innerHTML=function(e,t,n){return function(e,t,n){var s=800;return t.messageWidth>s&&(s=t.messageWidth),`\n <div id="gist-embed">\n <style>\n #x-gist-floating-top, #x-gist-floating-top-left, #x-gist-floating-top-right {\n position: fixed;\n top: 0px;\n z-index: 1000000;\n }\n #x-gist-floating-bottom, #x-gist-floating-bottom-left, #x-gist-floating-bottom-right {\n position: fixed;\n bottom: 0px;\n z-index: 1000000;\n }\n #x-gist-bottom, #x-gist-top, #x-gist-floating-top, #x-gist-floating-bottom {\n left: 50%;\n transform: translate(-50%, 0%);\n }\n #x-gist-floating-top-right, #x-gist-floating-bottom-right {\n right: 0px;\n }\n #gist-embed {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container .gist-frame {\n height: 100%;\n width: 100%;\n border: none;\n }\n #x-gist-top.${e},\n #x-gist-bottom.${e},\n #x-gist-floating-top.${e},\n #x-gist-floating-bottom.${e},\n #x-gist-floating-top-left.${e},\n #x-gist-floating-top-right.${e},\n #x-gist-floating-bottom-left.${e},\n #x-gist-floating-bottom-right.${e} {\n transition: height 0.1s ease-in-out;\n }\n @media (max-width: ${s}px) {\n #x-gist-top.${e},\n #x-gist-bottom.${e},\n #x-gist-floating-top.${e},\n #x-gist-floating-bottom.${e},\n #x-gist-floating-top-left.${e},\n #x-gist-floating-top-right.${e},\n #x-gist-floating-bottom-left.${e},\n #x-gist-floating-bottom-right.${e} {\n width: 100% !important;\n }\n }\n </style>\n <div id="gist-embed-container">\n <iframe id="${e}" class="gist-frame" src="${n}"></iframe>\n </div>\n </div>`}(K(t.instanceId),n,e)}(t,n,r),B(o,s)}else i(`Message could not be embedded, elementId ${e} not found.`)}function j(e){var t=Y(e);if(t)return t.style&&t.style.height&&"0px"!=t.style.height}function F(e,t,n){document.body.insertAdjacentHTML("afterbegin",function(e,t){var n=H(t);return function(e,t,n){var s=600;return t.messageWidth>s&&(s=t.messageWidth),`\n <div id="gist-embed-message">\n <style>\n #gist-overlay.gist-background {\n position: fixed;\n z-index: 9999999998;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: ${t.overlayColor};\n visibility: hidden;\n }\n #gist-overlay.gist-background.gist-visible {\n visibility: visible;\n }\n .gist-message {\n width: ${t.messageWidth}px;\n position: absolute;\n border: none;\n opacity: 0;\n transition: opacity 0.3s ease-in-out, height 0.1s ease-in-out;\n z-index: 9999999999;\n left: 50%;\n transform: translateX(-50%);\n }\n .gist-message.gist-visible {\n opacity: 1;\n pointer-events: auto;\n }\n .gist-message.gist-center {\n transform: translate(-50%, -50%);\n top: 50%;\n }\n .gist-message.gist-bottom {\n bottom: 0;\n }\n .gist-message.gist-top {\n top: 0;\n }\n @media (max-width: ${s}px) {\n .gist-message {\n width: 100%;\n }\n }\n </style>\n <div id="gist-overlay" class="gist-background">\n <iframe id="${e}" class="gist-message" src="${n}"></iframe>\n </div>\n </div>`}(K(t.instanceId),n,e)}(e,t)),B(K(t.instanceId),n)}function B(e,t){const n=document.getElementById(e);n&&(n.onload=function(){!function(e,t){const n=document.getElementById(e);n&&n.contentWindow&&n.contentWindow.postMessage({options:t},"*")}(e,t)})}function Q(e){var t=H(e),n=document.querySelector("#gist-overlay");if(n){n.classList.add("gist-visible");var s=document.querySelector(".gist-message");e.position?s.classList.add("gist-"+e.position):s.classList.add("gist-center"),setTimeout(Z,100),t.exitClick&&setTimeout((()=>function(e){var t=document.querySelector("#gist-overlay");t&&t.addEventListener("click",(function(){We.dismissMessage(e)}))}(e.instanceId)),1e3)}else X()}async function J(){var e,t=document.querySelector(".gist-message");t&&(t.classList.remove("gist-visible"),await(e=300,new Promise((t=>setTimeout(t,e))))),X()}function X(){var e=document.querySelector("#gist-embed-message");e&&e.parentNode.removeChild(e)}function K(e){return`gist-${e}`}function Z(){var e=document.querySelector(".gist-message");e&&e.classList.add("gist-visible")}function Y(e){try{var t=document.querySelector(`#${e}`);return t||null}catch{return null}}const ee="gist.web.customAttributes";let te=new Map;function ne(){const e=Array.from(te.entries()),t=new Date;t.setDate(t.getDate()+30),h(ee,e,t),i(`Saved ${te.size} custom attributes to storage with TTL of 30 days`)}!function(){const e=p(ee);if(e)try{te=new Map(e)}catch{te=new Map}else te=new Map}();async function se(e){const t=await oe();if(!t)return;const n=new Date;n.setMinutes(n.getMinutes()+60);h(t,e.filter(ae),n)}async function ie(e,t){return p(e).find((e=>e.queueId===t))}function ae(e){return e.properties&&e.properties.gist&&e.properties.gist.broadcast}async function oe(){const e=await W();return e?`gist.web.message.broadcasts.${e}`:null}function re(e,t){return`${e}.${t}.numberOfTimesShown`}function ce(e,t){return`${e}.${t}.shouldShow`}async function ue(e){const t=await ge();if(!t)return;const n=e.filter((e=>!(e.properties&&e.properties.gist&&e.properties.gist.broadcast))),s=new Date;s.setMinutes(s.getMinutes()+60),h(t,n,s)}async function de(){const e=await ge();if(!e)return[];const t=p(e)??[],n=await async function(){const e=await le();return e?p(e)??[]:[]}();return t.filter((e=>!n.includes(e.queueId)))}async function ge(){const e=await W();return e?`gist.web.message.user.${e}`:null}async function le(){const e=await W();return e?`gist.web.message.user.${e}.seen`:null}async function me(e){const t=await W();return t?`gist.web.message.user.${t}.message.${e}.loading`:null}async function fe(e){if(We.isDocumentVisible){if(We.overlayInstanceId)return i(`Message ${We.overlayInstanceId} already showing.`),null;var t=H(e);return e.instanceId=m(),e.overlay=!0,e.firstLoad=!0,e.shouldResizeHeight=!0,e.shouldScale=t.shouldScale,e.renderStartTime=(new Date).getTime(),We.overlayInstanceId=e.instanceId,We.currentMessages.push(e),be(e)}return i("Document hidden, not showing message now."),null}async function he(e,t){return We.isDocumentVisible?(e.instanceId=m(),e.overlay=!1,e.firstLoad=!0,e.shouldScale=!1,e.elementId=t,e.shouldResizeHeight=!j(t),e.renderStartTime=(new Date).getTime(),We.currentMessages.push(e),be(e,t)):(i("Document hidden, not showing message now."),null)}async function pe(e){e?(We.messageDismissed(e),e.overlay?await ye(!0,e):ve(e)):i(`Message with instance id: ${e.instanceId} not found`)}async function we(e){var t=H(e);e?t.persistent&&(i("Persistent message dismissed, logging view"),await De(e),await Se(e)):i(`Message with instance id: ${e.instanceId} not found`)}function ve(e){var t,n;Ee(e.instanceId),t=e.elementId,(n=Y(t))&&(n.classList.remove("gist-visible"),n.style.removeProperty("height"),n.innerHTML="")}async function ye(e,t){e?await J():X(),0==We.currentMessages.length&&(window.removeEventListener("message",Te),window.removeEventListener("touchstart",xe)),Ee(t.instanceId),We.overlayInstanceId=null}function be(e,t=null){if(t&&function(e){var t=Y(e);return!(!t||!t.classList.contains("gist-visible"))}(t))return i(`Message ${e.messageId} already showing in element ${t}.`),null;var n={endpoint:$.ENGINE_API_ENDPOINT[We.config.env],siteId:We.config.siteId,dataCenter:We.config.dataCenter,messageId:e.messageId,instanceId:e.instanceId,livePreview:!1,properties:e.properties,customAttributes:Object.fromEntries(new Map(te))},s=`${$.GIST_VIEW_ENDPOINT[We.config.env]}/index.html`;return window.addEventListener("message",Te),window.addEventListener("touchstart",xe),t?(G.includes(t)&&function(e){const t=document.createElement("div");t.id=e,"x-gist-top"===e?document.body.insertBefore(t,document.body.firstChild):document.body.insertAdjacentElement("beforeend",t);i("Top & bottom elements injected into page")}(t),z(t,s,e,n)):F(s,e,n),e}async function Se(e){i(`Message shown, logging view for: ${e.messageId}`);var t={};null!=e.queueId?(await De(e),t=await async function(e){try{return await x().post(`/api/v1/logs/queue/${e}`)}catch(e){return e.response}}(e.queueId)):t=await async function(e){try{return await x().post(`/api/v1/logs/message/${e}`)}catch(e){return e.response}}(e.messageId),200===t.status?i("Message view logged"):i(`Problem logging message: ${t.status}`)}function Ie(e){return We.currentMessages.find((t=>t.instanceId===e))}function Ee(e){We.currentMessages=We.currentMessages.filter((t=>t.instanceId!==e))}function $e(e,t){Ee(e),We.currentMessages.push(t)}function xe(){}async function Te(e){if(e.data.gist&&e.origin===$.RENDERER_HOST){var t=e.data.gist.instanceId,n=Ie(t);if(!n)return;var s=H(n);switch(e.data.gist.method){case"routeLoaded":var a=.001*((new Date).getTime()-n.renderStartTime);i(`Engine render for message: ${n.messageId} timer elapsed in ${a.toFixed(3)} seconds`),async function(e){const t=await me(e);if(!t)return!1;w(t)}(n.queueId),n.currentRoute=e.data.gist.parameters.route,n.firstLoad&&(n.overlay?Q(n):(g=n.elementId,(l=Y(g))&&l.classList.add("gist-visible")),We.messageShown(n),s.persistent?i("Persistent message shown, skipping logging view"):await Se(n),n.firstLoad=!1),$e(t,n);break;case"tap":var o=e.data.gist.parameters.action,r=e.data.gist.parameters.name;if(We.messageAction(n,o,r),e.data.gist.parameters.system&&!s.persistent){await pe(n);break}try{var c=new URL(o);if(c&&"gist:"===c.protocol)switch(c.href.replace("gist://","").split("?")[0]){case"close":await pe(n),await we(n),await ke(n),await Le();break;case"showMessage":var u=c.searchParams.get("messageId"),d=c.searchParams.get("properties");u&&(d&&(d=JSON.parse(atob(d))),await We.showMessage({messageId:u,properties:d}));break;case"loadPage":(c=c.href.substring(c.href.indexOf("?url=")+5))&&(c.startsWith("mailto:")||c.startsWith("https://")||c.startsWith("http://")||c.startsWith("/")?window.location.href=c:window.location.href=window.location+c)}}catch{}break;case"routeChanged":n.currentRoute=e.data.gist.parameters.route,n.renderStartTime=(new Date).getTime(),$e(t,n),i(`Route changed to: ${n.currentRoute}`);break;case"sizeChanged":i(`Size Changed Width: ${e.data.gist.parameters.width} - Height: ${e.data.gist.parameters.height}`),n.elementId&&!n.shouldResizeHeight||function(e,t){var n=Y(e.elementId?e.elementId:K(e.instanceId));if(n){var s=n.style;if(t.height>0)if(t.height>window.innerHeight){var i=1-(t.height/window.innerHeight-1);e.shouldScale&&i>=.4?(s.height=`${t.height}px`,s.transform=`translateX(-50%) translateY(-50%) scale(${i})`):s.height=`${window.innerHeight}px`}else s.height=`${t.height}px`}}(n,e.data.gist.parameters);break;case"titleChanged":i(`Overlay title changed to: ${e.data.gist.parameters.title}`),function(e,t){var n=Y(K(e));n&&(n.title=t)}(t,e.data.gist.parameters.title);break;case"eventDispatched":We.events.dispatch("eventDispatched",{name:e.data.gist.parameters.name,payload:e.data.gist.parameters.payload});break;case"error":case"routeError":We.messageError(n),We.overlayInstanceId?ye(!1,n):ve(n)}}var g,l}async function De(e){i(`Logging user message view locally for: ${e.queueId}`),ae(e)?await async function(e){i(`Marking broadcast ${e} as seen.`);const t=await oe();if(!t)return;const n=await ie(t,e);if(!n)return;const{broadcast:s}=n.properties.gist,a=re(t,e),o=ce(t,e);let r=p(a)||0;if(h(a,r+1),1===s.frequency.count)h(o,!1),i(`Marked broadcast ${e} as seen.`);else{let t=new Date;t.setSeconds(t.getSeconds()+s.frequency.delay),h(o,!1,t),i(`Marked broadcast ${e} as seen, broadcast was seen ${r+1} times, next show date is ${t}.`)}}(e.queueId):await async function(e){const t=await le();if(!t)return;const n=p(t)??[];n.push(e),h(t,n)}(e.queueId)}async function ke(e){ae(e)&&(i(`Logging broadcast dismissed locally for: ${e.queueId}`),await async function(e){i(`Marking broadcast ${e} as dismissed.`);const t=await oe();if(!t)return;const n=await ie(t,e);if(!n)return;const{broadcast:s}=n.properties.gist;if(!0===s.frequency.ignoreDismiss)return void i(`Broadcast ${e} is set to ignore dismiss.`);h(ce(t,e),!1),i(`Marked broadcast ${e} as dismissed and will not show again.`)}(e.queueId))}var Ce=(e,t)=>e().then((e=>new Promise((t=>setTimeout(t,e))))(t).then((()=>Ce(e,t)))),Me=!1;let Re=null;async function qe(){Me?await Le():U()?(i("Queue watcher started"),Me=!0,Ce((()=>new Promise((()=>async function(){if($.hasActiveSSEConnection())return!$.isSSEConnectionManagedBySDK()&&Re&&(i("Not the main instance, closing our SSE connection."),Ne()),void await Le();Re&&(i("SSE connection not active, closing it."),Ne());if($.useSSE()&&!N())return void await async function(){Ne();const e=(t=O(),null===t?(i("No user token available for SSE endpoint."),null):$.GIST_QUEUE_REALTIME_API_ENDPOINT[We.config.env]+`/api/v3/sse?userToken=${t}&siteId=${We.config.siteId}&sessionId=${q()}`);var t;if(null===e)return i("SSE endpoint not available, falling back to polling."),void await Ae();i(`Starting SSE queue listener on ${e}`),Re=new EventSource(e),$.setActiveSSEConnection(),Re.addEventListener("connected",(async e=>{try{i("SSE connection received:"),$.setUseSSEFlag(!0);var t=JSON.parse(e.data);t.heartbeat&&($.setSSEHeartbeat(t.heartbeat),i(`SSE heartbeat set to ${t.heartbeat} seconds`)),$.setActiveSSEConnection()}catch(e){i(`Failed to parse SSE settings: ${e}`)}w(C),await Ae()})),Re.addEventListener("messages",(async e=>{try{var t=JSON.parse(e.data);i("SSE message received:"),await ue(t),await se(t),await Le()}catch(e){i("Failed to parse SSE message"),Ne()}})),Re.addEventListener("error",(async e=>{i("SSE error received:"),Ne()})),Re.addEventListener("heartbeat",(async e=>{i("SSE heartbeat received:"),$.setActiveSSEConnection(),$.setUseSSEFlag(!0)}))}();await Ae()}()))),1e3)):i("User token not setup, queue not started.")}async function Le(){var e=await async function(){const e=await oe();return e?(p(e)??[]).filter((t=>{const{broadcast:n}=t.properties.gist,s=p(ce(e,t.queueId))??!0,i=p(re(e,t.queueId))||0,a=0===n.frequency.count;return s&&(a||i<n.frequency.count)})):[]}(),t=await de(),n=e.concat(t);i(`Messages in local queue: ${n.length}`);var s=n.sort(((e,t)=>e.priority-t.priority));for(const e of s)await Pe(e)}async function Pe(e){var t=H(e);if(t.hasRouteRule){var n=We.currentRoute;null==n&&(n=new URL(window.location.href).pathname);var s=t.routeRule;if(i(`Verifying route ${n} against rule: ${s}`),!new RegExp(s).test(n))return i(`Route ${n} does not match rule.`),!1}if(t.hasPosition&&(e.position=t.position),t.persistent||function(e){if(!ae(e))return!1;const{broadcast:t}=e.properties.gist;return 0===t.frequency.delay&&0===t.frequency.count}(e)||!await async function(e){const t=await me(e);return!!t&&null!==p(t)}(e.queueId)){var a=!1;return(a=t.isEmbedded?await he(e,t.elementId):await fe(e))&&async function(e){const t=await me(e);if(!t)return!1;h(t,!0,new Date(Date.now()+5e3))}(e.queueId),a}return i(`Not showing message with queueId ${e.queueId} because its already loading.`),!1}async function Ae(){if(U())if(We.isDocumentVisible)if(null===p(C)){var e=await R(),t=[];e?(200===e.status||204===e.status?(i("200 response, updating local store."),ue(t=e.data),se(t)):304===e.status&&i("304 response, using local store."),await Le()):i("There was an error while checking message queue.")}else i("Next queue pull scheduled for later.");else i("Document not visible, skipping queue check.");else i("User token reset, skipping queue check.")}function Ne(e=!1){e&&$.removeActiveSSEConnection(),(e||$.isSSEConnectionManagedBySDK())&&$.setUseSSEFlag(!1),Re&&(i("Stopping SSE queue listener..."),Re.close(),Re=null)}const Ue="cioPreviewId";function _e(){const e=new URLSearchParams(window.location.search).get(Ue);var t;return e&&(t=!1,sessionStorage.setItem(f,t),We.setUserToken(e),i(`Preview mode enabled with user token: ${e}`)),!v()}var We=class{static async setup(e){this.events=new s,this.config={useAnonymousSession:void 0!==e.useAnonymousSession&&e.useAnonymousSession,siteId:e.siteId,dataCenter:e.dataCenter,env:void 0===e.env?"prod":e.env,logging:void 0!==e.logging&&e.logging,experiments:void 0!==e.experiments&&e.experiments},this.currentMessages=[],this.overlayInstanceId=null,this.currentRoute=null,this.isDocumentVisible=!0,this.config.isPreviewSession=_e(),i(`Setup complete on ${this.config.env} environment.`),!this.config.isPreviewSession&&this.config.useAnonymousSession&&_(),await qe(),document.addEventListener("visibilitychange",(async()=>{"hidden"===document.visibilityState?this.isDocumentVisible=!1:(this.isDocumentVisible=!0,await Le())}),!1)}static async setCurrentRoute(e){this.currentRoute=e,i(`Current route set to: ${e}`),await Le()}static async setUserToken(e,t){this.config.isPreviewSession||(!function(e,t){void 0===t&&(t=new Date).setDate(t.getDate()+30),h(L,e,t),N()&&(w(C),w(P)),i(`Set user token "${e}" with expiry date set to ${t}`)}(e,t),Ne(!0),await qe())}static setUserLocale(e){var t;h(T,t=e),i(`Set user locate to "${t}"`)}static setCustomAttribute(e,t){return function(e,t){return e&&"string"==typeof e?(te.set(e,t),ne(),i(`Set custom attribute "${e}" to "${t}"`),!0):(i(`Invalid key for custom attribute: ${e}`),!1)}(e,t)}static clearCustomAttributes(){te.clear(),w(ee),i("Cleared all custom attributes")}static removeCustomAttribute(e){return function(e){if(!e||"string"!=typeof e)return i(`Invalid key for custom attribute: ${e}`),!1;const t=te.has(e);return te.delete(e),te.size>0?ne():w(ee),i(`Removed custom attribute "${e}"`),t}(e)}static async clearUserToken(){this.config.isPreviewSession||(w(L),i("Cleared user token"),this.config.useAnonymousSession&&_(),Ne(!0),await qe())}static async dismissMessage(e){var t=Ie(e);await pe(t),await we(t),await ke(t),await Le()}static async embedMessage(e,t){var n=await he(e,t);return n?n.instanceId:null}static async showMessage(e){var t=await fe(e);return t?t.instanceId:null}static messageShown(e){i(`Message shown: ${e.messageId}`),this.events.dispatch("messageShown",e)}static messageDismissed(e){null!==e&&(i(`Message dismissed: ${e.messageId}`),this.events.dispatch("messageDismissed",e))}static messageError(e){i(`Message error: ${e.messageId}`),this.events.dispatch("messageError",e)}static messageAction(e,t,n){i(`Message action: ${e.currentRoute}, ${t} with name ${n} on ${e.instanceId}`),this.events.dispatch("messageAction",{message:e,action:t,name:n})}}},6646:function(e,t,n){const s=n(1369).Z;e.exports=s}}]);
|
|
1
|
+
(self.webpackChunk_customerio_cdp_analytics_browser=self.webpackChunk_customerio_cdp_analytics_browser||[]).push([[646],{1369:function(e,t,n){"use strict";n.d(t,{Z:function(){return Oe}});class s{on(e,t){var n=this[e];n?n.push(t):this[e]=[t]}dispatch(e,t){var n=this[e];n&&n.forEach((e=>e(t)))}}function i(e){Oe.config&&Oe.config.logging&&console.log(`Gist: ${e}`)}const a="gist.web.isPersistingSession";function o(e,t,n=null){var s=n;s||(s=new Date).setDate(s.getDate()+365);const i={value:t,expiry:s};d().setItem(e,JSON.stringify(i))}function r(e){return g(e)}function c(e){d().removeItem(e)}function u(){const e=sessionStorage.getItem(a);return null===e?(sessionStorage.setItem(a,"true"),!0):"true"===e}function d(){return u()?localStorage:sessionStorage}function g(e){if(!e)return null;try{const t=d().getItem(e);if(!t)return null;const n=JSON.parse(t);if(!n.expiry)return n.value;const s=new Date,i=new Date(n.expiry),a=e.startsWith("gist.web.message.broadcasts")&&!e.endsWith("shouldShow")&&!e.endsWith("numberOfTimesShown")||e.startsWith("gist.web.message.user")&&!e.endsWith("seen"),o=new Date(s.getTime()+366e4);return a&&i.getTime()>o.getTime()||s.getTime()>i.getTime()?(c(e),null):n.value}catch(t){i(`Error checking key ${e} for expiry: ${t}`)}return null}var l,m=new Uint8Array(16);function f(){if(!l&&!(l="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return l(m)}var h=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var p=function(e){return"string"==typeof e&&h.test(e)},w=[],v=0;v<256;++v)w.push((v+256).toString(16).substr(1));var y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(w[e[t+0]]+w[e[t+1]]+w[e[t+2]]+w[e[t+3]]+"-"+w[e[t+4]]+w[e[t+5]]+"-"+w[e[t+6]]+w[e[t+7]]+"-"+w[e[t+8]]+w[e[t+9]]+"-"+w[e[t+10]]+w[e[t+11]]+w[e[t+12]]+w[e[t+13]]+w[e[t+14]]+w[e[t+15]]).toLowerCase();if(!p(n))throw TypeError("Stringified UUID is invalid");return n};var b=function(e,t,n){var s=(e=e||{}).random||(e.rng||f)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t){n=n||0;for(var i=0;i<16;++i)t[n+i]=s[i];return t}return y(s)};const S="gist.web.userQueueUseSSE",I="gist.web.activeSSEConnection";let E,$=30;const x={RENDERER_HOST:"https://code.gist.build",ENGINE_API_ENDPOINT:{prod:"https://engine.api.gist.build",dev:"https://engine.api.dev.gist.build",local:"http://engine.api.local.gist.build:82"},GIST_QUEUE_API_ENDPOINT:{prod:"https://consumer.cloud.gist.build",dev:"https://consumer.cloud.dev.gist.build",local:"http://api.local.gist.build:86"},GIST_QUEUE_REALTIME_API_ENDPOINT:{prod:"https://realtime.cloud.gist.build",dev:"https://realtime.cloud.dev.gist.build",local:"http://api.local.gist.build:3000"},GIST_VIEW_ENDPOINT:{prod:"https://renderer.gist.build/3.0",dev:"https://renderer.gist.build/3.0",local:"http://app.local.gist.build:8080/web"},getSdkId:function(){return E||(E=b()),E},useSSE:function(){return r(S)??!1},setUseSSEFlag:function(e){o(S,e,new Date((new Date).getTime()+6e4)),i(`Set user uses SSE to "${e}"`)},removeActiveSSEConnection:function(){c(I)},setActiveSSEConnection:function(){o(I,x.getSdkId(),new Date((new Date).getTime()+x.getSSEHeartbeat()))},hasActiveSSEConnection:function(){return r(I)??!1},isSSEConnectionManagedBySDK:function(){return r(I)===x.getSdkId()},getSSEHeartbeat:function(){return 1e3*($+5)},setSSEHeartbeat:function(e){e&&e>0&&($=e)}};function T(){const e=x.GIST_QUEUE_API_ENDPOINT[Oe.config.env],t={"X-CIO-Site-Id":Oe.config.siteId,"X-CIO-Client-Platform":"web"},n=H();async function s(n,s={}){const i=e+n,a=new AbortController,o=setTimeout((()=>a.abort()),5e3);try{const e=await fetch(i,{method:s.method||"GET",headers:{...t,...s.headers||{}},body:s.method&&"GET"!==s.method.toUpperCase()?s.body:void 0,signal:a.signal});clearTimeout(o);const n=e.headers.get("content-type")?.includes("application/json"),r=n?await e.json():await e.text(),c=Object.fromEntries(e.headers.entries());if(e.status<200||e.status>=400)throw{response:{status:e.status,data:r,headers:c}};return{status:e.status,headers:c,data:r}}catch(e){throw clearTimeout(o),e.response||(e.response={status:0,data:e.message||"Unknown error"}),e}}return null!=n&&(t["X-Gist-Encoded-User-Token"]=n),s.post=(e,t={},n={})=>s(e,{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json",...n.headers||{}}}),s}const k="gist.web.userLocale";var D=600,C=!1;const M="gist.web.userQueueNextPullCheck",R="gist.web.sessionId";async function q(){var e;try{if(!C){C=!0;var t={"X-Gist-User-Anonymous":U(),"Content-Language":null!==r(k)?r(k):navigator.language};e=await T().post(`/api/v3/users?sessionId=${L()}`,{},{headers:t})}}catch(t){t.response?e=t.response:i(`Error getting user queue: ${t}`)}finally{C=!1,function(e){if(e&&e.headers){var t=e.headers["x-gist-queue-polling-interval"];t&&t>0&&(D=t)}var n=new Date((new Date).getTime()+1e3*D);o(M,D,n)}(e),function(e){const t="true"===e?.headers?.["x-cio-use-sse"]?.toLowerCase();x.setUseSSEFlag(t)}(e)}return e}function L(){var e=r(R);return e||(e=b()),o(R,e,new Date((new Date).getTime()+18e5)),e}const P="gist.web.userToken",A="gist.web.usingGuestUserToken",N="gist.web.guestUserToken";function U(){return null!==r(A)}function _(){return r(P)}function W(){if(null===_()){var e=r(N);null==e&&(e=b(),o(N,e),i(`Set guest user token "${e}" with expiry date set to 1 year from today`)),o(P,e),o(A,!0),i(`Using anonymous session with token: "${e}"`)}}async function O(){var e=_();return null===e?null:await async function(e){const t=(new TextEncoder).encode(e),n=await crypto.subtle.digest("SHA-256",t),s=Array.from(new Uint8Array(n));return s.map((e=>e.toString(16).padStart(2,"0"))).join("")}(e)}function H(){var e=_();return null===e?null:btoa(e)}function G(e){const t={isEmbedded:!1,elementId:"",hasRouteRule:!1,routeRule:"",position:"",hasPosition:!1,shouldScale:!1,campaignId:null,messageWidth:414,overlayColor:"#00000033",persistent:!1,exitClick:!1,hasCustomWidth:!1},n=e?.properties?.gist;return n?{isEmbedded:!!n.elementId,elementId:n.elementId||"",hasRouteRule:!!n.routeRuleWeb,routeRule:n.routeRuleWeb||"",position:n.position||"",hasPosition:!!n.position,shouldScale:!!n.scale,campaignId:n.campaignId??null,messageWidth:n.messageWidth>0?n.messageWidth:t.messageWidth,hasCustomWidth:n.messageWidth>0,overlayColor:n.overlayColor||t.overlayColor,persistent:!!n.persistent,exitClick:!!n.exitClick}:t}var V=["x-gist-top","x-gist-floating-top","x-gist-bottom","x-gist-floating-bottom","x-gist-floating-bottom-left","x-gist-floating-bottom-right","x-gist-floating-top-left","x-gist-floating-top-right"];const z=["x-gist-top","x-gist-bottom","x-gist-floating-top","x-gist-floating-bottom"];function j(e,t,n,s){var a=ee(e);if(a){var o=Z(n.instanceId);a.classList.add(o);var r=G(n),c=r.messageWidth+"px";z.includes(e)&&!r.hasCustomWidth&&(c="100%"),V.includes(e)&&(a.style.width=c),F(e)||(a.style.height="0px"),a.innerHTML=function(e,t,n){return function(e,t,n){var s=800;return t.messageWidth>s&&(s=t.messageWidth),`\n <div id="gist-embed">\n <style>\n #x-gist-floating-top, #x-gist-floating-top-left, #x-gist-floating-top-right {\n position: fixed;\n top: 0px;\n z-index: 1000000;\n }\n #x-gist-floating-bottom, #x-gist-floating-bottom-left, #x-gist-floating-bottom-right {\n position: fixed;\n bottom: 0px;\n z-index: 1000000;\n }\n #x-gist-bottom, #x-gist-top, #x-gist-floating-top, #x-gist-floating-bottom {\n left: 50%;\n transform: translate(-50%, 0%);\n }\n #x-gist-floating-top-right, #x-gist-floating-bottom-right {\n right: 0px;\n }\n #gist-embed {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container .gist-frame {\n height: 100%;\n width: 100%;\n border: none;\n }\n #x-gist-top.${e},\n #x-gist-bottom.${e},\n #x-gist-floating-top.${e},\n #x-gist-floating-bottom.${e},\n #x-gist-floating-top-left.${e},\n #x-gist-floating-top-right.${e},\n #x-gist-floating-bottom-left.${e},\n #x-gist-floating-bottom-right.${e} {\n transition: height 0.1s ease-in-out;\n }\n @media (max-width: ${s}px) {\n #x-gist-top.${e},\n #x-gist-bottom.${e},\n #x-gist-floating-top.${e},\n #x-gist-floating-bottom.${e},\n #x-gist-floating-top-left.${e},\n #x-gist-floating-top-right.${e},\n #x-gist-floating-bottom-left.${e},\n #x-gist-floating-bottom-right.${e} {\n width: 100% !important;\n }\n }\n </style>\n <div id="gist-embed-container">\n <iframe id="${e}" class="gist-frame" src="${n}"></iframe>\n </div>\n </div>`}(Z(t.instanceId),n,e)}(t,n,r),Q(o,s)}else i(`Message could not be embedded, elementId ${e} not found.`)}function F(e){var t=ee(e);if(t)return t.style&&t.style.height&&"0px"!=t.style.height}function B(e,t,n){document.body.insertAdjacentHTML("afterbegin",function(e,t){var n=G(t);return function(e,t,n){var s=600;return t.messageWidth>s&&(s=t.messageWidth),`\n <div id="gist-embed-message">\n <style>\n #gist-overlay.gist-background {\n position: fixed;\n z-index: 9999999998;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: ${t.overlayColor};\n visibility: hidden;\n }\n #gist-overlay.gist-background.gist-visible {\n visibility: visible;\n }\n .gist-message {\n width: ${t.messageWidth}px;\n position: absolute;\n border: none;\n opacity: 0;\n transition: opacity 0.3s ease-in-out, height 0.1s ease-in-out;\n z-index: 9999999999;\n left: 50%;\n transform: translateX(-50%);\n }\n .gist-message.gist-visible {\n opacity: 1;\n pointer-events: auto;\n }\n .gist-message.gist-center {\n transform: translate(-50%, -50%);\n top: 50%;\n }\n .gist-message.gist-bottom {\n bottom: 0;\n }\n .gist-message.gist-top {\n top: 0;\n }\n @media (max-width: ${s}px) {\n .gist-message {\n width: 100%;\n }\n }\n </style>\n <div id="gist-overlay" class="gist-background">\n <iframe id="${e}" class="gist-message" src="${n}"></iframe>\n </div>\n </div>`}(Z(t.instanceId),n,e)}(e,t)),Q(Z(t.instanceId),n)}function Q(e,t){const n=document.getElementById(e);n&&(n.onload=function(){!function(e,t){const n=document.getElementById(e);n&&n.contentWindow&&n.contentWindow.postMessage({options:t},"*")}(e,t)})}function J(e){var t=G(e),n=document.querySelector("#gist-overlay");if(n){n.classList.add("gist-visible");var s=document.querySelector(".gist-message");e.position?s.classList.add("gist-"+e.position):s.classList.add("gist-center"),setTimeout(Y,100),t.exitClick&&setTimeout((()=>function(e){var t=document.querySelector("#gist-overlay");t&&t.addEventListener("click",(function(){Oe.dismissMessage(e)}))}(e.instanceId)),1e3)}else K()}async function X(){var e,t=document.querySelector(".gist-message");t&&(t.classList.remove("gist-visible"),await(e=300,new Promise((t=>setTimeout(t,e))))),K()}function K(){var e=document.querySelector("#gist-embed-message");e&&e.parentNode.removeChild(e)}function Z(e){return`gist-${e}`}function Y(){var e=document.querySelector(".gist-message");e&&e.classList.add("gist-visible")}function ee(e){try{var t=document.querySelector(`#${e}`);return t||null}catch{return null}}const te="gist.web.customAttributes";let ne=new Map;function se(){const e=Array.from(ne.entries()),t=new Date;t.setDate(t.getDate()+30),o(te,e,t),i(`Saved ${ne.size} custom attributes to storage with TTL of 30 days`)}!function(){const e=r(te);if(e)try{ne=new Map(e)}catch{ne=new Map}else ne=new Map}();async function ie(e){const t=await re();if(!t)return;const n=new Date;n.setMinutes(n.getMinutes()+60);o(t,e.filter(oe),n)}async function ae(e,t){return r(e).find((e=>e.queueId===t))}function oe(e){return e.properties&&e.properties.gist&&e.properties.gist.broadcast}async function re(){const e=await O();return e?`gist.web.message.broadcasts.${e}`:null}function ce(e,t){return`${e}.${t}.numberOfTimesShown`}function ue(e,t){return`${e}.${t}.shouldShow`}async function de(e){const t=await le();if(!t)return;const n=e.filter((e=>!(e.properties&&e.properties.gist&&e.properties.gist.broadcast))),s=new Date;s.setMinutes(s.getMinutes()+60),o(t,n,s)}async function ge(){const e=await le();if(!e)return[];const t=r(e)??[],n=await async function(){const e=await me();return e?r(e)??[]:[]}();return t.filter((e=>!n.includes(e.queueId)))}async function le(){const e=await O();return e?`gist.web.message.user.${e}`:null}async function me(){const e=await O();return e?`gist.web.message.user.${e}.seen`:null}async function fe(e){const t=await O();return t?`gist.web.message.user.${t}.message.${e}.loading`:null}async function he(e){if(Oe.isDocumentVisible){if(Oe.overlayInstanceId)return i(`Message ${Oe.overlayInstanceId} already showing.`),null;var t=G(e);return e.instanceId=b(),e.overlay=!0,e.firstLoad=!0,e.shouldResizeHeight=!0,e.shouldScale=t.shouldScale,e.renderStartTime=(new Date).getTime(),Oe.overlayInstanceId=e.instanceId,Oe.currentMessages.push(e),Se(e)}return i("Document hidden, not showing message now."),null}async function pe(e,t){return Oe.isDocumentVisible?(e.instanceId=b(),e.overlay=!1,e.firstLoad=!0,e.shouldScale=!1,e.elementId=t,e.shouldResizeHeight=!F(t),e.renderStartTime=(new Date).getTime(),Oe.currentMessages.push(e),Se(e,t)):(i("Document hidden, not showing message now."),null)}async function we(e){e?(Oe.messageDismissed(e),e.overlay?await be(!0,e):ye(e)):i(`Message with instance id: ${e.instanceId} not found`)}async function ve(e){var t=G(e);e?t.persistent&&(i("Persistent message dismissed, logging view"),await De(e),await Ie(e)):i(`Message with instance id: ${e.instanceId} not found`)}function ye(e){var t,n;$e(e.instanceId),t=e.elementId,(n=ee(t))&&(n.classList.remove("gist-visible"),n.style.removeProperty("height"),n.innerHTML="")}async function be(e,t){e?await X():K(),0==Oe.currentMessages.length&&(window.removeEventListener("message",ke),window.removeEventListener("touchstart",Te)),$e(t.instanceId),Oe.overlayInstanceId=null}function Se(e,t=null){if(t&&function(e){var t=ee(e);return!(!t||!t.classList.contains("gist-visible"))}(t))return i(`Message ${e.messageId} already showing in element ${t}.`),null;var n={endpoint:x.ENGINE_API_ENDPOINT[Oe.config.env],siteId:Oe.config.siteId,dataCenter:Oe.config.dataCenter,messageId:e.messageId,instanceId:e.instanceId,livePreview:!1,properties:e.properties,customAttributes:Object.fromEntries(new Map(ne))},s=`${x.GIST_VIEW_ENDPOINT[Oe.config.env]}/index.html`;return window.addEventListener("message",ke),window.addEventListener("touchstart",Te),t?(V.includes(t)&&function(e){const t=document.createElement("div");t.id=e,"x-gist-top"===e?document.body.insertBefore(t,document.body.firstChild):document.body.insertAdjacentElement("beforeend",t);i("Top & bottom elements injected into page")}(t),j(t,s,e,n)):B(s,e,n),e}async function Ie(e){i(`Message shown, logging view for: ${e.messageId}`);var t={};null!=e.queueId?(await De(e),t=await async function(e){try{return await T().post(`/api/v1/logs/queue/${e}`)}catch(e){return e.response}}(e.queueId)):t=await async function(e){try{return await T().post(`/api/v1/logs/message/${e}`)}catch(e){return e.response}}(e.messageId),200===t.status?i("Message view logged"):i(`Problem logging message: ${t.status}`)}function Ee(e){return Oe.currentMessages.find((t=>t.instanceId===e))}function $e(e){Oe.currentMessages=Oe.currentMessages.filter((t=>t.instanceId!==e))}function xe(e,t){$e(e),Oe.currentMessages.push(t)}function Te(){}async function ke(e){if(e.data.gist&&e.origin===x.RENDERER_HOST){var t=e.data.gist.instanceId,n=Ee(t);if(!n)return;var s=G(n);switch(e.data.gist.method){case"routeLoaded":var a=.001*((new Date).getTime()-n.renderStartTime);i(`Engine render for message: ${n.messageId} timer elapsed in ${a.toFixed(3)} seconds`),async function(e){const t=await fe(e);if(!t)return!1;c(t)}(n.queueId),n.currentRoute=e.data.gist.parameters.route,n.firstLoad&&(n.overlay?J(n):(l=n.elementId,(m=ee(l))&&m.classList.add("gist-visible")),Oe.messageShown(n),s.persistent?i("Persistent message shown, skipping logging view"):await Ie(n),n.firstLoad=!1),xe(t,n);break;case"tap":var o=e.data.gist.parameters.action,r=e.data.gist.parameters.name;if(Oe.messageAction(n,o,r),e.data.gist.parameters.system&&!s.persistent){await we(n);break}try{var u=new URL(o);if(u&&"gist:"===u.protocol)switch(u.href.replace("gist://","").split("?")[0]){case"close":await we(n),await ve(n),await Ce(n),await Pe();break;case"showMessage":var d=u.searchParams.get("messageId"),g=u.searchParams.get("properties");d&&(g&&(g=JSON.parse(atob(g))),await Oe.showMessage({messageId:d,properties:g}));break;case"loadPage":(u=u.href.substring(u.href.indexOf("?url=")+5))&&(u.startsWith("mailto:")||u.startsWith("https://")||u.startsWith("http://")||u.startsWith("/")?window.location.href=u:window.location.href=window.location+u)}}catch{}break;case"routeChanged":n.currentRoute=e.data.gist.parameters.route,n.renderStartTime=(new Date).getTime(),xe(t,n),i(`Route changed to: ${n.currentRoute}`);break;case"sizeChanged":i(`Size Changed Width: ${e.data.gist.parameters.width} - Height: ${e.data.gist.parameters.height}`),n.elementId&&!n.shouldResizeHeight||function(e,t){var n=ee(e.elementId?e.elementId:Z(e.instanceId));if(n){var s=n.style;if(t.height>0)if(t.height>window.innerHeight){var i=1-(t.height/window.innerHeight-1);e.shouldScale&&i>=.4?(s.height=`${t.height}px`,s.transform=`translateX(-50%) translateY(-50%) scale(${i})`):s.height=`${window.innerHeight}px`}else s.height=`${t.height}px`}}(n,e.data.gist.parameters);break;case"titleChanged":i(`Overlay title changed to: ${e.data.gist.parameters.title}`),function(e,t){var n=ee(Z(e));n&&(n.title=t)}(t,e.data.gist.parameters.title);break;case"eventDispatched":Oe.events.dispatch("eventDispatched",{name:e.data.gist.parameters.name,payload:e.data.gist.parameters.payload});break;case"error":case"routeError":Oe.messageError(n),Oe.overlayInstanceId?be(!1,n):ye(n)}}var l,m}async function De(e){i(`Logging user message view locally for: ${e.queueId}`),oe(e)?await async function(e){i(`Marking broadcast ${e} as seen.`);const t=await re();if(!t)return;const n=await ae(t,e);if(!n)return;const{broadcast:s}=n.properties.gist,a=ce(t,e),c=ue(t,e);let u=r(a)||0;if(o(a,u+1),1===s.frequency.count)o(c,!1),i(`Marked broadcast ${e} as seen.`);else{let t=new Date;t.setSeconds(t.getSeconds()+s.frequency.delay),o(c,!1,t),i(`Marked broadcast ${e} as seen, broadcast was seen ${u+1} times, next show date is ${t}.`)}}(e.queueId):await async function(e){const t=await me();if(!t)return;const n=r(t)??[];n.push(e),o(t,n)}(e.queueId)}async function Ce(e){oe(e)&&(i(`Logging broadcast dismissed locally for: ${e.queueId}`),await async function(e){i(`Marking broadcast ${e} as dismissed.`);const t=await re();if(!t)return;const n=await ae(t,e);if(!n)return;const{broadcast:s}=n.properties.gist;if(!0===s.frequency.ignoreDismiss)return void i(`Broadcast ${e} is set to ignore dismiss.`);o(ue(t,e),!1),i(`Marked broadcast ${e} as dismissed and will not show again.`)}(e.queueId))}var Me=(e,t)=>e().then((e=>new Promise((t=>setTimeout(t,e))))(t).then((()=>Me(e,t)))),Re=!1;let qe=null;async function Le(){Re?await Pe():_()?(i("Queue watcher started"),Re=!0,Me((()=>new Promise((()=>async function(){if(x.hasActiveSSEConnection())return!x.isSSEConnectionManagedBySDK()&&qe&&(i("Not the main instance, closing our SSE connection."),Ue()),void await Pe();qe&&(i("SSE connection not active, closing it."),Ue());if(x.useSSE()&&!U())return void await async function(){Ue();const e=(t=H(),null===t?(i("No user token available for SSE endpoint."),null):x.GIST_QUEUE_REALTIME_API_ENDPOINT[Oe.config.env]+`/api/v3/sse?userToken=${t}&siteId=${Oe.config.siteId}&sessionId=${L()}`);var t;if(null===e)return i("SSE endpoint not available, falling back to polling."),void await Ne();i(`Starting SSE queue listener on ${e}`),qe=new EventSource(e),x.setActiveSSEConnection(),qe.addEventListener("connected",(async e=>{try{i("SSE connection received:"),x.setUseSSEFlag(!0);var t=JSON.parse(e.data);t.heartbeat&&(x.setSSEHeartbeat(t.heartbeat),i(`SSE heartbeat set to ${t.heartbeat} seconds`)),x.setActiveSSEConnection()}catch(e){i(`Failed to parse SSE settings: ${e}`)}c(M),await Ne()})),qe.addEventListener("messages",(async e=>{try{var t=JSON.parse(e.data);i("SSE message received:"),await de(t),await ie(t),await Pe()}catch(e){i("Failed to parse SSE message"),Ue()}})),qe.addEventListener("error",(async e=>{i("SSE error received:"),Ue()})),qe.addEventListener("heartbeat",(async e=>{i("SSE heartbeat received:"),x.setActiveSSEConnection(),x.setUseSSEFlag(!0)}))}();await Ne()}()))),1e3)):i("User token not setup, queue not started.")}async function Pe(){var e=await async function(){const e=await re();return e?(r(e)??[]).filter((t=>{const{broadcast:n}=t.properties.gist,s=r(ue(e,t.queueId))??!0,i=r(ce(e,t.queueId))||0,a=0===n.frequency.count;return s&&(a||i<n.frequency.count)})):[]}(),t=await ge(),n=e.concat(t);i(`Messages in local queue: ${n.length}`);var s=n.sort(((e,t)=>e.priority-t.priority));for(const e of s)await Ae(e)}async function Ae(e){var t=G(e);if(t.hasRouteRule){var n=Oe.currentRoute;null==n&&(n=new URL(window.location.href).pathname);var s=t.routeRule;if(i(`Verifying route ${n} against rule: ${s}`),!new RegExp(s).test(n))return i(`Route ${n} does not match rule.`),!1}if(t.hasPosition&&(e.position=t.position),t.persistent||function(e){if(!oe(e))return!1;const{broadcast:t}=e.properties.gist;return 0===t.frequency.delay&&0===t.frequency.count}(e)||!await async function(e){const t=await fe(e);return!!t&&null!==r(t)}(e.queueId)){var a=!1;return(a=t.isEmbedded?await pe(e,t.elementId):await he(e))&&async function(e){const t=await fe(e);if(!t)return!1;o(t,!0,new Date(Date.now()+5e3))}(e.queueId),a}return i(`Not showing message with queueId ${e.queueId} because its already loading.`),!1}async function Ne(){if(_())if(Oe.isDocumentVisible)if(null===r(M)){var e=await q(),t=[];e?(200===e.status||204===e.status?(i("200 response, updating local store."),de(t=e.data),ie(t)):304===e.status&&i("304 response, using local store."),await Pe()):i("There was an error while checking message queue.")}else i("Next queue pull scheduled for later.");else i("Document not visible, skipping queue check.");else i("User token reset, skipping queue check.")}function Ue(e=!1){e&&x.removeActiveSSEConnection(),(e||x.isSSEConnectionManagedBySDK())&&x.setUseSSEFlag(!1),qe&&(i("Stopping SSE queue listener..."),qe.close(),qe=null)}const _e="cioPreviewId";function We(){const e=new URLSearchParams(window.location.search).get(_e);var t;return e&&(t=!1,sessionStorage.setItem(a,t),Oe.setUserToken(e),i(`Preview mode enabled with user token: ${e}`)),!u()}var Oe=class{static async setup(e){this.events=new s,this.config={useAnonymousSession:void 0!==e.useAnonymousSession&&e.useAnonymousSession,siteId:e.siteId,dataCenter:e.dataCenter,env:void 0===e.env?"prod":e.env,logging:void 0!==e.logging&&e.logging,experiments:void 0!==e.experiments&&e.experiments},this.currentMessages=[],this.overlayInstanceId=null,this.currentRoute=null,this.isDocumentVisible=!0,this.config.isPreviewSession=We(),function(){const e=d();for(let t=e.length-1;t>=0;t--)g(e.key(t))}(),i(`Setup complete on ${this.config.env} environment.`),!this.config.isPreviewSession&&this.config.useAnonymousSession&&W(),await Le(),document.addEventListener("visibilitychange",(async()=>{"hidden"===document.visibilityState?this.isDocumentVisible=!1:(this.isDocumentVisible=!0,await Pe())}),!1)}static async setCurrentRoute(e){this.currentRoute=e,i(`Current route set to: ${e}`),await Pe()}static async setUserToken(e,t){this.config.isPreviewSession||(!function(e,t){void 0===t&&(t=new Date).setDate(t.getDate()+30),o(P,e,t),U()&&(c(M),c(A)),i(`Set user token "${e}" with expiry date set to ${t}`)}(e,t),Ue(!0),await Le())}static setUserLocale(e){var t;o(k,t=e),i(`Set user locate to "${t}"`)}static setCustomAttribute(e,t){return function(e,t){return e&&"string"==typeof e?(ne.set(e,t),se(),i(`Set custom attribute "${e}" to "${t}"`),!0):(i(`Invalid key for custom attribute: ${e}`),!1)}(e,t)}static clearCustomAttributes(){ne.clear(),c(te),i("Cleared all custom attributes")}static removeCustomAttribute(e){return function(e){if(!e||"string"!=typeof e)return i(`Invalid key for custom attribute: ${e}`),!1;const t=ne.has(e);return ne.delete(e),ne.size>0?se():c(te),i(`Removed custom attribute "${e}"`),t}(e)}static async clearUserToken(){this.config.isPreviewSession||(c(P),i("Cleared user token"),this.config.useAnonymousSession&&W(),Ue(!0),await Le())}static async dismissMessage(e){var t=Ee(e);await we(t),await ve(t),await Ce(t),await Pe()}static async embedMessage(e,t){var n=await pe(e,t);return n?n.instanceId:null}static async showMessage(e){var t=await he(e);return t?t.instanceId:null}static messageShown(e){i(`Message shown: ${e.messageId}`),this.events.dispatch("messageShown",e)}static messageDismissed(e){null!==e&&(i(`Message dismissed: ${e.messageId}`),this.events.dispatch("messageDismissed",e))}static messageError(e){i(`Message error: ${e.messageId}`),this.events.dispatch("messageError",e)}static messageAction(e,t,n){i(`Message action: ${e.currentRoute}, ${t} with name ${n} on ${e.instanceId}`),this.events.dispatch("messageAction",{message:e,action:t,name:n})}}},6646:function(e,t,n){const s=n(1369).Z;e.exports=s}}]);
|
package/dist/umd/646.js.gz
CHANGED
|
Binary file
|