From 19d660e134c18ab802e560b0414ede928dd6d688 Mon Sep 17 00:00:00 2001 From: surishubham Date: Fri, 3 Jan 2025 15:26:07 +0530 Subject: [PATCH] added script --- docusaurus.config.js | 20 ++--- salesforce_chatwidget.js | 158 +++++++++++++++++++++++++++++++++++++++ sf_chat.js | 106 ++++++++++++++++++++++++++ 3 files changed, 275 insertions(+), 9 deletions(-) create mode 100644 salesforce_chatwidget.js create mode 100644 sf_chat.js diff --git a/docusaurus.config.js b/docusaurus.config.js index 0e90d8c3b..08a578813 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -11,6 +11,8 @@ module.exports = { projectName: 'Lambdatest', // Usually your repo name. clientModules: [ require.resolve('./custom.js'), + require.resolve('./salesforce_chatwidget.js'), + require.resolve('./sf_chat.js'), ], plugins: [require.resolve("docusaurus-plugin-image-zoom")], @@ -20,19 +22,19 @@ module.exports = { // src: 'https://www.lambdatest.com/resources/js/zohoscript.js', // defer: true, // }, - { - src: 'https://staging.lambdatestinternal.com/resources/js/salesforce_chatwidget.js', - defer: true, - }, + // { + // src: 'https://staging.lambdatestinternal.com/resources/js/salesforce_chatwidget.js', + // defer: true, + // }, { src: 'https://staging.lambdatestinternal.com/resources/js/lambda_gtm.js', defer: true, }, - { - src: 'https://staging.lambdatestinternal.com/resources/js/sf_chat.js', - defer: true, - onload: "sf_messaging()", - }, + // { + // src: 'https://staging.lambdatestinternal.com/resources/js/sf_chat.js', + // defer: true, + // onload: "sf_messaging()", + // }, // { // src: 'https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js', // defer: true, diff --git a/salesforce_chatwidget.js b/salesforce_chatwidget.js new file mode 100644 index 000000000..e292364e5 --- /dev/null +++ b/salesforce_chatwidget.js @@ -0,0 +1,158 @@ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;$jscomp.FORCE_POLYFILL_PROMISE=!1;$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(f,g,p){if(f==Array.prototype||f==Object.prototype)return f;f[g]=p.value;return f}; +$jscomp.getGlobal=function(f){f=["object"==typeof globalThis&&globalThis,f,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var g=0;g>>0,$jscomp.propertyToPolyfillSymbol[u]=$jscomp.IS_SYMBOL_NATIVE? +$jscomp.global.Symbol(u):$jscomp.POLYFILL_PREFIX+p+"$"+u),$jscomp.defineProperty(q,$jscomp.propertyToPolyfillSymbol[u],{configurable:!0,writable:!0,value:g})))};$jscomp.underscoreProtoCanBeSet=function(){var f={a:!0},g={};try{return g.__proto__=f,g.a}catch(p){}return!1}; +$jscomp.setPrototypeOf=$jscomp.TRUST_ES6_POLYFILLS&&"function"==typeof Object.setPrototypeOf?Object.setPrototypeOf:$jscomp.underscoreProtoCanBeSet()?function(f,g){f.__proto__=g;if(f.__proto__!==g)throw new TypeError(f+" is not extensible");return f}:null;$jscomp.arrayIteratorImpl=function(f){var g=0;return function(){return g{function f(a){try{var b=new URL(a);return!!b&&"https:"===b.protocol}catch(c){return!1}}function g(a=!1){return embeddedservice_bootstrap.isLocalStorageAvailable&&a?localStorage:embeddedservice_bootstrap.isSessionStorageAvailable?sessionStorage:void 0}function p(){let a,b;const c=JSON.stringify({});embeddedservice_bootstrap.isLocalStorageAvailable&&!localStorage.getItem(v)&&(a=c,localStorage.setItem(v,a));embeddedservice_bootstrap.isSessionStorageAvailable&&!sessionStorage.getItem(v)&&(b=c,sessionStorage.setItem(v, +b));(a||b)&&X("ESW_3RDPARTY_STORAGE_SET_OBJECTS",{orgId:embeddedservice_bootstrap.settings.orgId,localStorageObj:a,sessionStorageObj:b});n("initializeWebStorage","web storage initialized")}function q(a,b=!0){let c;(b=g(b))&&(c=(b.getItem(v)&&JSON.parse(b.getItem(v))||{})[a]);return c}function u(a,b){if(b&&a){const c=b.getItem(v)&&JSON.parse(b.getItem(v))||{};Object.keys(a).forEach(d=>{c[d]=a[d]});0!==Object.keys(c).length&&b.setItem(v,JSON.stringify(c))}}function F(a,b,c=!0,d=!1){const e=g(c);if(e){const h= +e.getItem(v)&&JSON.parse(e.getItem(v))||{};h[a]=b;e.setItem(v,JSON.stringify(h));n("setItemInWebStorage",`${a} set in ${c?"localStorage":"sessionStorage"}`);d&&X("ESW_3RDPARTY_STORAGE_SET_ITEMS",{orgId:embeddedservice_bootstrap.settings.orgId,key:a,value:b,inLocalStorage:c})}}function G(a){embeddedservice_bootstrap.isLocalStorageAvailable&&!a&&localStorage.removeItem(v);embeddedservice_bootstrap.isSessionStorageAvailable&&sessionStorage.removeItem(v);X("ESW_3RDPARTY_STORAGE_CLEAR",embeddedservice_bootstrap.settings.orgId); +n("clearWebStorage","web storage cleared")}function Hb(){K=void 0;Aa=new Promise(b=>{Ba=b});M={};Y={};H=void 0;Ca=Da=O=I=!1;Z=aa=void 0;Ua();Va();Ib();n("clearInMemoryData","Cleared in-memory data.");const a=Wa();n("clearInMemoryData",`Reset conversationId. Old conversationId: ${A} & New conversationId: ${a}`);A=a}function Xa(a){const b=(c,d)=>{Object.keys(d).forEach(e=>{"object"===typeof c[e]&&typeof("object"===d[e])?b(c[e],d[e]):void 0===c[e]&&(c[e]=d[e])})};a&&"object"===typeof a&&b(embeddedservice_bootstrap.settings, +a)}function ba(a,b,c){if((c||embeddedservice_bootstrap.settings.devMode)&&console&&console[a])console[a]("[EmbeddedServiceBootstrap] "+(Array.isArray(b)?b.join(", "):b))}function n(a,b,c){ba("log",b,c);c={};Object.assign(c,{configDev:embeddedservice_bootstrap.settings.eswConfigDevName,method:a?a:"",stateMessage:b?`[bootstrap][timestamp: ${Date.now()}] ${b}`:"",convId:A,convType:w(),hostUrl:window.location.href});Ea(c)}function r(a,b){a?ba("warn","Warning: "+a,b):ba("warn","EmbeddedServiceBootstrap sent an anonymous warning.", +b)}function l(a,b,c,d){b?ba("error",b,d):ba("error","EmbeddedServiceBootstrap responded with an unspecified error.",d);d={};Object.assign(d,Object.assign({},{configDev:embeddedservice_bootstrap.settings.eswConfigDevName,method:a?a:"",errMessage:b?`[bootstrap][timestamp: ${Date.now()}] ${b}`:""},c&&{errCode:c},{convId:A,convType:w(),hostUrl:window.location.href}));Ea(null,d)}function Wa(){const a=new Uint32Array(32);crypto.getRandomValues(a);let b="";for(let c=0;32>c;c++){if(8===c||12===c||16===c|| +20===c)b+="-";b=12===c?b+"4":16===c?b+"0123456789abcdef".charAt(a[c]&3|8):b+"0123456789abcdef".charAt(a[c]&15)}return b}function Fa(a,b,c){const d=document.createElementNS("http://www.w3.org/2000/svg",b);Object.getOwnPropertyNames(c).forEach(e=>{"children"===e?c.children.forEach(h=>{Fa(d,h.type,h)}):d.setAttribute(e,c[e])});a.appendChild(document.createTextNode("\n"));a.appendChild(d);a.appendChild(document.createTextNode("\n"))}function Ga(a){const b=document.createElementNS("http://www.w3.org/2000/svg", +"svg");if(a)return b.setAttribute("focusable","false"),b.setAttribute("aria-hidden","true"),b.setAttribute("viewBox","0 0 100 100"),Array.isArray(a)?a.forEach(c=>{Fa(b,c.type,c)}):Fa(b,"path",{d:a}),b;l("renderSVG","Invalid icon data.")}function Jb(){[{name:"document",object:document,functions:"addEventListener createAttribute createComment createDocumentFragment createElementNS createTextNode createRange getElementById getElementsByTagName getElementsByClassName querySelector querySelectorAll removeEventListener".split(" ")}, +{name:"window",object:window,functions:"addEventListener clearTimeout dispatchEvent open removeEventListener requestAnimationFrame setInterval setTimeout fetch".split(" ")}].forEach(a=>{a.functions.forEach(b=>{b in a.object&&!Function.prototype.toString.call(a.object[b]).match(/\[native code\]/)&&r("EmbeddedService Messaging Bootstrap may not function correctly with this native JS function modified: "+a.name+"."+b,!0)})})}function oa(a){"string"!==typeof a?l("setAndStoreJwt",`Expected to receive string, instead received: ${a}.`): +(K=a,F(C.JWT,K))}function Kb(){window.addEventListener("message",Ya);embeddedservice_bootstrap.isLocalStorageAvailable&&window.addEventListener("storage",Za);pa()&&window.$A.eventService&&w()===x.EXP_SITE_AUTH&&window.$A.eventService.addHandler({event:"force:logout",handler:$a});try{(new PerformanceObserver(a=>{a.getEntries().forEach(b=>{"reload"===b.type&&t("EMBEDDED_MESSAGING_APP_AFTER_REFRESH")})})).observe({type:"navigation",buffered:!0})}catch(a){l("addEventHandlers",`Unable to initialize PerformanceObserver ${a}.`)}} +function Ya(a){if(a&&a.data&&a.origin)if(embeddedservice_bootstrap.filePreviewFrame&&embeddedservice_bootstrap.filePreviewFrame.contentWindow===a.source)switch(a.data.method){case "ESW_APP_SHOW_FILE_PREVIEW_FRAME":ab(!0);break;case "ESW_APP_HIDE_FILE_PREVIEW_FRAME":ab(!1);break;default:r("Unrecognized event name: "+a.data.method)}else if(embeddedservice_bootstrap.siteContextFrame&&embeddedservice_bootstrap.siteContextFrame.contentWindow===a.source)switch(a.data.method){case "ESW_3RDPARTY_STORAGE_READY":bb(); +break;case "ESW_3RDPARTY_STORAGE_RESPONSE":a.data.data&&a.data.data.localStorage&&u(a.data.data.localStorage,localStorage);a.data.data&&a.data.data.sessionStorage&&u(a.data.data.sessionStorage,sessionStorage);cb();break;default:r("Unrecognized event name: "+a.data.method)}else if(0===J().indexOf(a.origin)&&embeddedservice_bootstrap.isMessageFromSalesforceDomain(a.origin)&&D().contentWindow===a.source){var b=D();switch(a.data.method){case "ESW_APP_READY_EVENT":Ba();break;case "ESW_APP_LOADED":a=z(); +b=document.getElementById("embeddedMessagingIconContainer");let c=document.getElementById("embeddedMessagingIconChat"),d=document.getElementById("embeddedMessagingLoadingSpinner");D()||r("Embedded Messaging iframe not available for post-app-load updates.");a?(b&&d&&b.removeChild(d),c&&(c.style.display="none"),a.disabled=!1,a.classList.remove("embeddedMessagingConversationButtonLoading"),a.classList.add("embeddedMessagingConversationButtonLoaded"),a.classList.add("no-hover")):r("Embedded Messaging static button not available for post-app-load updates."); +db();O=!0;try{y("onEmbeddedMessagingInitSuccess")}catch(e){O=!1,l("emitEmbeddedMessagingInitSuccessEvent",`Something went wrong in firing onEmbeddedMessagingInitSuccess event ${e}.`)}break;case "ESW_APP_INITIALIZATION_ERROR":L();break;case "ESW_APP_MINIMIZE":embeddedservice_bootstrap.minimizeIframe(b,a.data.data);break;case "ESW_APP_MAXIMIZE":embeddedservice_bootstrap.maximizeIframe(b);break;case "ESW_APP_RESET_INITIAL_STATE":Q();break;case "ESW_SET_JWT_EVENT":oa(a.data.data);break;case "ESW_CLEAR_WEBSTORAGE_EVENT":G(); +break;case "ESW_DOWNLOAD_FILE":Lb(a.data.data);break;case "ESW_SET_WEBSTORAGE_FAILEDMESSAGES_EVENT":a=a.data.data;"object"!==typeof a?l("storeFailedMessagesInWebStorage",`Expected to receive object, instead received: ${a}.`):F(C.FAILED_OUTBOUND_MESSAGE_ENTRIES,a,!1);break;case "ESW_CLEAN_UP_WEBSTORAGE_FAILEDMESSAGES_EVENT":a=C.FAILED_OUTBOUND_MESSAGE_ENTRIES;embeddedservice_bootstrap.isLocalStorageAvailable&&localStorage.getItem(v)&&(b=JSON.parse(localStorage.getItem(v))||{},delete b[a],localStorage.setItem(v, +JSON.stringify(b)));embeddedservice_bootstrap.isSessionStorageAvailable&&sessionStorage.getItem(v)&&(b=JSON.parse(sessionStorage.getItem(v))||{},delete b[a],sessionStorage.setItem(v,JSON.stringify(b)));n("removeItemInWebStorage",`${a} removed from web storage`);break;case "ESW_APP_UPDATE_TITLE_NOTIFICATION":Ua(a.data.data);break;case "ESW_APP_SEND_HIDDEN_PRECHAT_FIELDS":t("ESW_APP_RECEIVE_HIDDEN_PRECHAT_FIELDS",M);break;case "ESW_APP_SEND_AUTORESPONSE_PARAMETERS":t("ESW_APP_RECEIVE_AUTORESPONSE_PARAMETERS", +Y);break;case "EMBEDDED_MESSAGING_IDENTITY_TOKEN_EXPIRED_EVENT":w()!==x.AUTH?r("handleIdentityTokenExpiredEvent method called but User Verification isn\u2019t enabled in Messaging Settings."):y("onEmbeddedMessagingIdentityTokenExpired");break;case "EMBEDDED_MESSAGING_JWT_RETRIEVAL_FAILURE_EVENT":eb();break;case "ESW_APP_PRECHAT_SUBMIT":Mb(a.data.data);break;case "ESW_APP_SHOW_MINIMIZED_STATE_NOTIFICATION":(a=D())&&a.classList.add("hasMinimizedNotification");break;case "EMBEDDED_MESSAGING_REQUEST_TRANSCRIPT_EVENT":Nb(); +break;case "EMBEDDED_MESSAGING_DISPATCH_EVENT_TO_HOST":y(a.data.data&&a.data.data.eventName,{detail:a.data.data.eventDetails||{}});break;case "EMBEDDED_MESSAGING_PUBLIC_SEND_TEXT_MESSAGE_API_RESPONSE":a=a.data.data;a.success?aa():Z(a.error);Z=aa=void 0;break;default:r("Unrecognized event name: "+a.data.method)}}else l("handleMessageEvent",`Unexpected message origin: ${a.origin}`)}function fb(){y("onEmbeddedMessagingButtonClicked");return gb()}function Za(a){a&&a.key&&a.key===v&&null===a.newValue&& +ca()&&Ha(!1,!0)}function $a(){n("handleAuraLogoutEvent","Received force:logout event in auth mode, proceeds to clear session");return embeddedservice_bootstrap.userVerificationAPI.clearSession()}function L(){O=!0;try{Ea(),y("onEmbeddedMessagingInitError")}catch(a){O=!1,l("emitEmbeddedMessagingInitErrorEvent",`Something went wrong in firing onEmbeddedMessagingInitError event ${a}.`)}}function qa(a){let b=ra()?!1:Ia()&&!embeddedservice_bootstrap.settings.hideChatButtonOnLoad;b=void 0!==a&&null!==a? +a:b;w()===x.AUTH&&(b=b&&sa(H));try{y("onEmbeddedMessagingChannelMenuVisibilityChanged",{detail:{devName:embeddedservice_bootstrap.settings.eswConfigDevName,isVisible:b}})}catch(c){l("emitEmbeddedMessagingChannelMenuVisibilityChangeEvent",`Something went wrong in firing emitEmbeddedMessagingChannelMenuVisibilityChange event ${c}.`)}}function y(a,b={detail:{}}){if(!a)throw Error(`Expected an eventName parameter with a string value. Instead received ${a}.`);if(b&&!("detail"in b))throw Error(`The options parameter of the event is malformed: ${b}.`); +try{"onEmbeddedMessagingConversationOpened"===a&&(Da=!0),window.dispatchEvent(new CustomEvent(a,b))}catch(c){throw Error("Something went wrong while dispatching the event "+a+":"+c);}}function Ua(a){if(a){const b=JSON.parse(a)[0],c=hb;da&&window.clearInterval(da);da=window.setInterval(()=>{document.title=document.title===b?c:b},1E3)}else window.clearInterval(da),da=void 0,document.title=hb}function R(){return document.getElementById("embedded-messaging")}function D(){return document.getElementById("embeddedMessagingFrame")} +function z(){return document.getElementById("embeddedMessagingConversationButton")}function ab(a){var b=D();if(embeddedservice_bootstrap.filePreviewFrame&&b){if(a){if(embeddedservice_bootstrap.filePreviewFrame.classList.add("show"),embeddedservice_bootstrap.filePreviewFrame.contentWindow.focus(),embeddedservice_bootstrap.filePreviewFrame.setAttribute("aria-hidden","false"),b.tabIndex="-1",b.setAttribute("aria-hidden","true"),b=R())b.inert=!0}else if(embeddedservice_bootstrap.filePreviewFrame.classList.remove("show"), +embeddedservice_bootstrap.filePreviewFrame.setAttribute("aria-hidden","true"),b.tabIndex="0",b.setAttribute("aria-hidden","false"),b=R())b.inert=!1;n("setFilePreviewFrameVisibility",`Full size file preview ${a?"shown":"hidden"}`)}}function Lb(a){let b;if(!f(a.attachmentDownloadURL))throw Error(`Invalid attachmentDownloadURL : ${a.attachmentDownloadURL}.`);b=document.createElement("iframe");b.style.display="none";b.src=a.attachmentDownloadURL||"";document.body.appendChild(b);a.shouldOpenFileInNewTab&& +window.open(b.src,"_blank","noreferrer noopener");setTimeout(()=>{document.body.removeChild(b)},1E3)}function ib(a){return new Promise((b,c)=>{let d=J(),e=document.createElement("link");e.id="embeddedMessagingBootstrapStyles";e.class="embeddedMessagingBootstrapStyles";e.href=d+"/assets/styles/bootstrap"+(embeddedservice_bootstrap.settings.devMode?"":".min")+".css";e.type="text/css";e.rel="stylesheet";e.onerror=c;e.onload=b;document.getElementsByTagName("head")[0].appendChild(e)})}function jb(){return Ja(embeddedservice_bootstrap.settings.scrt2URL+ +"/embeddedservice/v1/embedded-service-config?orgId="+embeddedservice_bootstrap.settings.orgId+"&esConfigName="+embeddedservice_bootstrap.settings.eswConfigDevName+"&language="+embeddedservice_bootstrap.settings.language,"GET","getConfigurationData")}function Ka(){return Ja(embeddedservice_bootstrap.settings.scrt2URL+"/embeddedservice/v1/businesshours?orgId="+embeddedservice_bootstrap.settings.orgId+"&esConfigName="+embeddedservice_bootstrap.settings.eswConfigDevName,"GET","getBusinessHoursInterval").then(a=> +{a=a&&a.businessHoursInfo;n("getBusinessHoursInterval","Successfully retrieved Business Hours data");a&&Array.isArray(a.businessHours)&&0{throw a;})}function kb(a){l("handleBusinessHoursError","Failed to retrieve Business Hours data. Retrying the request.",a);return Ka()}function lb(){if(embeddedservice_bootstrap.settings.snippetConfig.expSiteUrl){const a=embeddedservice_bootstrap.settings.snippetConfig.expSiteUrl+ +(pa()?"":"vforcesite")+"/_nc_external/system/security/session/SessionTimeServlet?buster="+(new Date).getTime();return Ja(a,"GET","getExpSiteSessionTimeout").then(b=>{try{b=JSON.parse(b.substring(b.indexOf("{"),b.indexOf("}")+1))}catch(c){l("getExpSiteSessionTimeout","Error parsing response text from server ",c)}b.sr&&(n("getExpSiteSessionTimeout","Successfully retrieved experience site session timeout"),0{lb()},1E3*b.sr)):embeddedservice_bootstrap.userVerificationAPI.clearSession())})}}function Ja(a,b,c){const d=performance.now();return new Promise((e,h)=>{const m=new XMLHttpRequest;m.open(b,a,!0);m.onreadystatechange=k=>{if((k=k.target)&&k.readyState===k.DONE||204===k.status){const ea=((performance.now()-d)/1E3).toFixed(3);if(200===k.status||204===k.status)if("getExpSiteSessionTimeout"!==c){const P=k.responseText?JSON.parse(k.responseText):k.responseText;e(P)}else e(k.responseText); +else h(k.status);n("sendXhrRequest",`${c?c:a} took ${ea} seconds and returned with the status code ${k.status}`)}};m.send()})}function Ob(){return ca()?nb().then(a=>ta().then(b=>{n("initializeConversationState","finished joining verified user conversation");ua(a,b)}).catch(()=>{L()})):w()===x.UNAUTH?ob()||(embeddedservice_bootstrap.settings.embeddedServiceConfig.termsAndConditions||{}).isTermsAndConditionsEnabled?(ua(),Promise.resolve()):Na().then(a=>fa(M).then(b=>{n("initializeConversationState", +"finished creating conversation");ua(a,b)}).catch(()=>{L()})):Promise.reject(Error("Something went wrong initializing conversation state."))}function ua(a,b,c=!1){var d=q(C.FAILED_OUTBOUND_MESSAGE_ENTRIES,!1);const e=embeddedservice_bootstrap.settings.standardLabels,h=embeddedservice_bootstrap.settings.embeddedServiceConfig.customLabels;if(embeddedservice_bootstrap.settings.imageCompressionOptions){var m=embeddedservice_bootstrap.settings.imageCompressionOptions;m=Object.assign({},m.quality&&!isNaN(Number(m.quality))&& +0<=Number(m.quality)&&1>=Number(m.quality)&&{quality:Number(m.quality)},m.maxHeight&&!isNaN(Number(m.maxHeight))&&0{c&&c.isExistingConversation?(n("handlePrechatSubmit","Pre-chat submitted but a conversation already exits for the verified user. Joining the existing conversation."),t("EMBEDDED_MESSAGING_SET_CONVERSATION_DATA_EVENT", +c)):(n("handlePrechatSubmit","Pre-chat submitted. Creating a new conversation."),fa(b).then(d=>{t("EMBEDDED_MESSAGING_SET_CONVERSATION_DATA_EVENT",d)}))}):w()===x.UNAUTH&&(q(C.JWT)?(n("handlePrechatSubmit","Pre-chat submitted but a JWT exists in web storage. Fetching existing conversations."),K=q(C.JWT),qb().then(c=>{t("ESW_SET_JWT_EVENT",c);ta().then(d=>{d&&d.isExistingConversation?(n("handlePrechatSubmit","Pre-chat submitted but a conversation already exits for the unverified user. Joining the existing conversation."), +t("EMBEDDED_MESSAGING_SET_CONVERSATION_DATA_EVENT",d)):(n("handlePrechatSubmit","Pre-chat submitted and no existing conversations found. Creating a new conversation."),fa(b).then(e=>{t("EMBEDDED_MESSAGING_SET_CONVERSATION_DATA_EVENT",e)}))})})):(n("handlePrechatSubmit","Pre-chat submitted. Fetching a JWT and starting a new conversation."),Na().then(c=>{t("ESW_SET_JWT_EVENT",c);fa(b).then(d=>{t("EMBEDDED_MESSAGING_SET_CONVERSATION_DATA_EVENT",d)})})))}function rb(){return new Promise(a=>{embeddedservice_bootstrap.createFilePreviewFrame(); +embeddedservice_bootstrap.createIframe().then(()=>{a("Created Embedded Messaging frame.")})})}function qb(){return q(C.JWT)?Qb().then(a=>{oa(a.accessToken);n("handleGetContinuityJwt","Sucessfully retreived a Continuity JWT");return a}).catch(a=>{l("handleGetContinuityJwt",`Failed to get Continuity JWT: ${a&&a.message?a.message:a}.`);Q()}):Promise.reject(void 0)}function Qb(){const a=embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/authorization/continuityAccessToken");return T(a, +"GET","cors",null,null,"getContinuityJwt").then(b=>{if(!b.ok)throw b;return b.json()})}function Na(){return Rb().then(a=>{oa(a.accessToken);n("handleGetUnauthenticatedJwt","Successfully retreived an Unauthenticated JWT");return a}).catch(a=>Sb(a))}function Rb(){const a=embeddedservice_bootstrap.settings.orgId,b=embeddedservice_bootstrap.settings.eswConfigDevName;var c=sb();c=c?embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/authorization/unauthenticated/accessToken","?",c):embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/authorization/unauthenticated/accessToken"); +return T(c,"POST","cors",{"Content-Type":"application/json"},{orgId:a,developerName:b,capabilitiesVersion:"248"},"getUnauthenticatedJwt").then(d=>{if(!d.ok)throw d;return d.json()})}function nb(){return(w()===x.EXP_SITE_AUTH?Tb():Ub()).then(a=>{a=w()===x.EXP_SITE_AUTH?a.data:a;oa(a.accessToken);n("handleGetAuthenticatedJwt","Successfully retreived an Authenticated JWT");return a}).catch(a=>{l("handleGetAuthenticatedJwt",`Error retrieving authenticated token: ${a&&a.message?a.message:a}.`);eb()})} +function Tb(){const a=embeddedservice_bootstrap.settings.snippetConfig.expSiteUrl+"/miaw/auth/accesstoken"+`?platformType=${"Web"}&requestType=${"Community"}&developerName=${embeddedservice_bootstrap.settings.eswConfigDevName}&channelAddressIdentifier=${embeddedservice_bootstrap.settings.embeddedServiceConfig.embeddedServiceMessagingChannel.channelAddressIdentifier||""}&capabilitiesVersion=${"248"}&deviceId="abcd"`;return ha(a,"GET","cors",null,null,"getExpSiteAuthenticatedJwt").then(b=>{if(!b.ok)throw b; +return b.json()}).catch(b=>va(b,a,"GET","cors",null,null,"getExpSiteAuthenticatedJwt"))}function Ub(){const a=embeddedservice_bootstrap.settings.orgId,b=embeddedservice_bootstrap.settings.eswConfigDevName,c=H,d=sb(),e=d?embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/authorization/authenticated/accessToken","?",d):embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/authorization/authenticated/accessToken"),h={"Content-Type":"application/json"},m={orgId:a,developerName:b, +capabilitiesVersion:"248",authorizationType:Oa.JWT,customerIdentityToken:c};return c&&sa(c)?ha(e,"POST","cors",h,m,"getAuthenticatedJwt").then(k=>{if(!k.ok)throw k;return k.json()}).catch(k=>va(k,e,"POST","cors",h,m,"getAuthenticatedJwt")):(new Promise(k=>{tb({apiPath:e,method:"POST",mode:"cors",requestHeaders:h,requestBody:m,resolve:k})})).then(k=>{if(!k.ok)throw k;return k.json()})}function Vb(){Wb().then(()=>{n("handleRegisterDeviceCapabilities","Successfully Registered Device Capabilities.")})} +function Wb(){const a=embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/device/registerDeviceCapabilities");return T(a,"POST","cors",null,{},"registerDeviceCapabilities")}function ta(a){return Xb(!1,embeddedservice_bootstrap.settings.restrictSessionOnMessagingChannel?embeddedservice_bootstrap.settings.embeddedServiceConfig.embeddedServiceMessagingChannel.channelAddressIdentifier:null).then(b=>{let c=[];if(!b.conversations||!Array.isArray(b.conversations))throw Error(`Invalid conversation list: ${b.conversations}.`); +c=b.conversations.filter(d=>0===d.endTimestamp);if(0===c.length){if(a)throw n("handleListConversation","No open conversation found, deleting stale data from web storage.",!0),r("No open conversation found, deleting stale data from web storage."),Q(),Error("No open conversation found for JWT in web storage.");return ob()||(embeddedservice_bootstrap.settings.embeddedServiceConfig.termsAndConditions||{}).isTermsAndConditionsEnabled?null:(n("handleListConversation","No existing conversation found and pre-chat is not enabled. Will start a new conversation."), +r("No existing conversation found and pre-chat is not enabled. Will start a new conversation."),fa(M).then(d=>d))}1e.startTimestamp-d.startTimestamp)); +b=c[0];if(!Yb(b.conversationId))throw Error(`Invalid conversation identifier: ${b.conversationId}.`);n("handleListConversation","Successfully retrieved existing conversation");A!==b.conversationId&&(n("handleListConversation",`ConversationId change detected. Old conversation-id: ${A} & New conversation-id: ${b.conversationId}`),A=b.conversationId);b.isExistingConversation=!0;return b}).catch(b=>{l("handleListConversation",`Failed to list conversation entries: ${b&&b.message?b.message:b}.`);throw Error(`Failed to list conversation entries: ${b&& +b.message?b.message:b}.`);})}function Xb(a,b){const c=embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/queries/conversation/list");return T(c,"POST","cors",null,Object.assign({},{includeClosedConversations:a},b&&{channelAddressIdentifier:b}),"listConversation").then(d=>d.json())}function Sb(a){if(a&&a.status&&401===a.status)return l("handleGetJwtError","Unauthorized error caused by JWT expiration. Attempt to get another JWT",a.status),Na().catch(b=>{throw Error(b);});throw Error(`Error retrieving unauthenticated token: ${a}.`); +}function ob(){return(embeddedservice_bootstrap.settings.embeddedServiceConfig.forms||[]).some(a=>{a.formFields=a.formFields||[];return"PreChat"===a.formType&&0{y("onEmbeddedMessagingConversationStarted",{detail:{conversationId:A}});Vb();b.esDeveloperName=embeddedservice_bootstrap.settings.eswConfigDevName; +n("handleCreateNewConversation",`Initialized the esDeveloperName associated with current conversation to: ${embeddedservice_bootstrap.settings.eswConfigDevName}`);return b})}function Zb(a){const b=embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/conversation");return T(b,"POST","cors",null,Object.assign({},a&&{routingAttributes:a},{conversationId:A}),"createNewConversation").then(c=>c.json())}function $b(){const a=embeddedservice_bootstrap.settings.scrt2URL.concat("/iamessage/v1/conversation", +"/",A,"/transcript");return T(a,"GET","cors",null,null,"getTranscript").then(b=>b.arrayBuffer())}function Nb(){y("onEmbeddedMessagingTranscriptRequested",{detail:{conversationId:A}});$b().then(a=>{a=new Blob([a],{type:"octet/stream"});a=window.URL.createObjectURL(a);const b=document.createElement("a");b.href=a;b.download="ConversationTranscript.pdf";b.click();window.URL.revokeObjectURL(a);t("EMBEDDED_MESSAGING_REQUEST_TRANSCRIPT_SUCCESS_EVENT");y("onEmbeddedMessagingTranscriptDownloadSuccessful", +{detail:{conversationId:A}})}).catch(a=>{if(a){const b=a.status;a=a.message||void 0;t("EMBEDDED_MESSAGING_REQUEST_TRANSCRIPT_ERROR_EVENT",{detail:{errorCode:b,errorMessage:a}});l("handleRequestTranscript",`Transcript request failed with status code: ${b} & message: ${a}`,b)}else t("EMBEDDED_MESSAGING_REQUEST_TRANSCRIPT_ERROR_EVENT");y("onEmbeddedMessagingTranscriptRequestFailed",{detail:{conversationId:A}})})}function ha(a,b,c,d,e,h=a){d=d?d:Object.assign({},{"Content-Type":"application/json"},K&& +{Authorization:"Bearer "+K});e=e?JSON.stringify(e):void 0;const m=performance.now();return fetch(a,Object.assign({},{method:b,mode:c,headers:d},e&&{body:e})).then(k=>$jscomp.asyncExecutePromiseGeneratorFunction(function*(){const ea=((performance.now()-m)/1E3).toFixed(3);n("sendFetchRequest",`${h} took ${ea} seconds and returned with the status code ${k.status}`);if(!k.ok){let P;try{P=Object.assign(k,yield k.json())}catch(pc){P=Object.assign(k,{message:`Error reading the body stream of error object: ${k}`})}throw P; +}return k}))}function va(a,b,c,d,e,h,m=b){if(!a||!a.status||500<=a.status&&599>=a.status)return l("handleSendFetchRequestError",`Something went wrong in ${m}: ${a&&a.message?a.message:JSON.stringify(Object.assign({},a,{status:a.status,statusText:a.statusText,type:a.type}))}. Re-trying the request.`,a&&a.status),ha(b,c,d,e,h,m).catch(k=>{l("handleSendFetchRequestError",`${m} request failed again: ${k&&k.message?k.message:JSON.stringify(Object.assign({},k,{status:k.status,statusText:k.statusText,type:k.type}))}.`, +k&&k.status);throw k;});if(401===a.status){l("handleSendFetchRequestError",`${m}: ${a&&a.message?a.message:JSON.stringify(Object.assign({},a,{status:a.status,statusText:a.statusText,type:a.type}))}.`,a&&a.status);if(w()===x.UNAUTH)throw G(),a;if(ca())return H&&sa(H)||w()===x.EXP_SITE_AUTH?new Promise(k=>{ub({apiPath:b,method:c,mode:d,requestHeaders:e,requestBody:h,resolve:k})}):new Promise(k=>{tb({apiPath:b,method:c,mode:d,requestHeaders:e,requestBody:h,resolve:k})})}l("handleSendFetchRequestError", +`Something went wrong in ${m}: ${a&&a.message?a.message:JSON.stringify(Object.assign({},a,{status:a.status,statusText:a.statusText,type:a.type}))}`,a&&a.status);throw a;}function T(a,b,c,d,e,h){return ha(a,b,c,d,e,h).catch(m=>va(m,a,b,c,d,e,h))}function sb(){let a="";const b=Pa();b&&(a=(new URLSearchParams({os:b.os.name,osVersion:b.os.version,browser:b.browser.name,browserVersion:b.browser.version})).toString());return a}function Pa(){var a=[navigator.platform,navigator.userAgent,navigator.appVersion, +navigator.vendor,window.opera].join(" ");const b=vb(a,[{name:"Windows Phone",value:"Windows Phone",version:"OS"},{name:"Windows",value:"Win",version:"NT"},{name:"iPhone",value:"iPhone",version:"OS"},{name:"iPad",value:"iPad",version:"OS"},{name:"Kindle",value:"Silk",version:"Silk"},{name:"Android",value:"Android",version:"Android"},{name:"PlayBook",value:"PlayBook",version:"OS"},{name:"BlackBerry",value:"BlackBerry",version:"/"},{name:"Macintosh",value:"Mac",version:"OS X"},{name:"Linux",value:"Linux", +version:"rv"},{name:"Palm",value:"Palm",version:"PalmOS"}]);a=vb(a,[{name:"Edge",value:"Edg",version:"Edg"},{name:"Chrome",value:"Chrome",version:"Chrome"},{name:"Firefox",value:"Firefox",version:"Firefox"},{name:"Safari",value:"Safari",version:"Version"},{name:"Internet Explorer",value:"MSIE",version:"MSIE"},{name:"Opera",value:"Opera",version:"Opera"},{name:"BlackBerry",value:"CLDC",version:"CLDC"},{name:"Mozilla",value:"Mozilla",version:"Mozilla"}]);return{os:b,browser:a}}function vb(a,b){let c; +let d;for(c=0;c +m;m++)h=document.createElement("div"),h.setAttribute("class","embeddedMessagingLoadingCircle"+m+" embeddedMessagingLoadingCircle"),d.appendChild(h);d.classList.add("embeddedMessagingIconLoading");a.classList.add("embeddedMessagingConversationButtonLoading");b.insertBefore(d,c);a.disabled=!0;e.className="slds-assistive-text";e.setAttribute("role","alert");e.innerHTML=E("EmbeddedMessagingPrechat","PrechatSubmitButtonLoading")||"Loading";d.appendChild(e)}}function Ia(){if(!N)return!0;const a=Number(N.startTime), +b=Number(N.endTime),c=Date.now();return c>=a&&c{clearTimeout(ia);ia=void 0;bc(b);b?y("onEmbeddedMessagingBusinessHoursEnded"):y("onEmbeddedMessagingBusinessHoursStarted")},a-Date.now()))}}function bc(a){a?(N=void 0,embeddedservice_bootstrap.utilAPI.hideChatButton(),Ka().then(La()).catch(b=>kb(b))):(ja()||embeddedservice_bootstrap.utilAPI.showChatButton(), +La())}function cc(){const a=!!navigator.userAgent.match(/iP(hone|ad|od)/i);var b=navigator.userAgent.match(/(?!=OS)(([0-9]){2})/i);b=b&&0{const c=D();if("string"!==typeof a)throw Error(`Expected a string to use as message param in post message, instead received ${a}.`); +c&&c.contentWindow?c.contentWindow.postMessage(Object.assign({},{method:a},b&&{data:b}),J()):r(`Embedded Messaging iframe not available for post message with method ${a}.`)})}function X(a,b){ec.then(()=>{const c=embeddedservice_bootstrap.siteContextFrame;if("string"!==typeof a)throw Error(`Expected a string to use as message param in post message, instead received ${a}.`);c&&c.contentWindow?c.contentWindow.postMessage(Object.assign({},{method:a},b&&{data:b}),J()):r(`Embedded Messaging iframe not available for post message with method ${a}.`)})} +function zb(){X("ESW_PREFETCH_LWR_RESOURCES")}function fc(a){a||l("handleAuraSite","Failed to load aura app. Iframe is undefined.");a.src=J()+"/embeddedService/embeddedService.app"}function gc(a){let b=J();a||l("handleLWRSite","Failed to load LWR site. Iframe is undefined.");b.endsWith("/")||(b+="/");a.src=b+"?lwc.mode="+(embeddedservice_bootstrap.settings.devMode?"dev":"prod")}function gb(){return new Promise((a,b)=>{try{let c=z(),d=D();if(c&&!c.classList.contains("embeddedMessagingConversationButtonLoaded")){if(q(C.JWT))return n("handleClick", +"Conversation button clicked but a JWT exists in web storage. Joining the existing conversation."),K=q(C.JWT),Ab(!1).then(()=>{a()}).catch(e=>{L();l("handleClick",e.message);b(e)});F(C.CONVERSATION_BUTTON_CLICK_TIME,Date.now(),!0,!0);wb();n("handleClick","Conversation button clicked");rb().then(()=>{a()}).catch(e=>{l("handleClick",e.message);b(e)});Ob().catch(e=>{L();l("handleClick",e.message);b(e)})}else c&&c.classList.contains("embeddedMessagingConversationButtonLoaded")&&d&&d.classList&&d.classList.contains("isMaximized")? +t("ESW_APP_MINIMIZE"):l("handleClick","Something went wrong handling button click event.")}catch(c){b(c)}})}function hc(a){let b=D();a&&a.key&&(a.key===ka.SPACE||a.key===ka.ENTER?(a.preventDefault(),fb()):a.key===ka.TAB&&a.shiftKey&&b&&b.classList&&b.classList.contains("isMaximized")&&(a.preventDefault(),t("trapfocustolast")))}function ic(){const a=document.getElementById("embeddedMessagingMinimizedNotification"),b=z();a&&a.parentNode.removeChild(a);b&&b.focus()}function jc(a){if(a.key===ka.ENTER|| +a.key===ka.SPACE)a.preventDefault(),this.handleNotificationDimissButtonClick()}function Ab(a){if(q(C.JWT))return wb(),rb().catch(l),qb().then(b=>{ta(a).then(c=>{ua(b,c,a)})}).catch(l)}function mb(){K=q(C.JWT);const a=embeddedservice_bootstrap.settings.embeddedServiceConfig.embeddedServiceMessagingChannel.channelAddressIdentifier||"",b=(Bb(K)||{}).channelAddId||"";embeddedservice_bootstrap.settings.restrictSessionOnMessagingChannel&&a!==b?embeddedservice_bootstrap.userVerificationAPI.clearSession(): +(embeddedservice_bootstrap.generateMarkup(!0),Ab(!0))}function Q(a){n("resetClientToInitialState","Resetting client to initial state.");try{G(a),Hb(),p()}catch(b){l("resetClientToInitialState",`Error on clearing web storage for the previously ended conversation: ${b}`)}la&&"function"===typeof la&&(la(),la=void 0);U&&yb();Ra.test(navigator.userAgent)&&Qa(!1);embeddedservice_bootstrap.removeMarkup();w()===x.UNAUTH&&(embeddedservice_bootstrap.generateMarkup(),z()&&z().focus());n("resetClientToInitialState", +"Successfully reset client to initial state.")}function kc(){const a=document.createElement("div");a.id="embeddedMessagingModalOverlay";return a}function Ea(a,b){a&&xa.currentStateLogs.push(a);b&&xa.errorLogs.push(b);Aa.then(()=>{t("EMBEDDED_MESSAGING_PUSH_PARENT_FRAME_LOGS",{pendingLogs:xa});Va()})}function Va(){xa={currentStateLogs:[],errorLogs:[]}}function Sa(){}function Ha(a,b){D()?t("EMBEDDED_MESSAGING_CLEAR_USER_SESSION_EVENT",a):Q(b)}function ub(a){return new Promise(b=>{n("renewAuthenticatedJwt", +"Renewing Authenticated JWT");nb().then(()=>{Cb(a);b()})})}function Cb(a){a&&ha(a.apiPath,a.method,a.mode,a.requestHeaders,a.requestBody).then(b=>{a.resolve&&"function"===typeof a.resolve&&a.resolve(b)}).catch(b=>va(b,a.apiPath,a.method,a.mode,a.requestHeaders,a.requestBody))}function tb(a){if(a){y("onEmbeddedMessagingIdentityTokenExpired");var b=new Promise(d=>{ma=d}),c=new Promise((d,e)=>{setTimeout(()=>{e()},3E4)});Promise.race([b,c]).then(()=>{n("handleIdentityTokenExpiry","Valid identity token found. Fetch authenticated JWT."); +a.apiPath.includes("/accessToken")?(a.requestBody.customerIdentityToken=H,Cb(a)):ub(a)}).catch(()=>{l("handleIdentityTokenExpiry","Failed to fetch authenticated JWT due to setIdentityToken timeout or other error. Clearing the messaging session on all tabs.");Ha(!1,!1)})}}function eb(){let a;Q(!1);embeddedservice_bootstrap.generateMarkup();a=z();var b=document.getElementById("embeddedMessagingIconChat");var c=document.getElementById("embeddedMessagingIconContainer");if(a){a.style.display="block";a.setAttribute("tabindex", +-1);a.style.setProperty("cursor","default");a.classList.add("no-hover");c&&b&&c.removeChild(b);b=Ga(ya.REFRESH);b.setAttribute("id","embeddedMessagingIconRefresh");b.setAttribute("class","embeddedMessagingIconRefresh");c.appendChild(b);c=document.createElement("div");b=document.createElement("div");const e=document.createElement("span"),h=document.createElement("span");var d=document.createElement("button");const m=document.createElement("span"),k=document.createElement("span");d.className="embeddedMessagingMinimizedNotificationDismissButton"; +d.addEventListener("click",ic);d.addEventListener("keydown",jc);d.setAttribute("aria-describedby","dismissButton-help");m.className="embeddedMessagingMinimizedNotificationDismissButtonText";m.title=E("EmbeddedMessagingMinimizedState","NotificationDismissButtonText")||"Dismiss";m.innerHTML=E("EmbeddedMessagingMinimizedState","NotificationDismissButtonText")||"Dismiss";m.style.setProperty("font-family",S("font"));k.className="slds-assistive-text";k.id="dismissButton-help";k.innerHTML=E("EmbeddedMessagingMinimizedState", +"MinimizedNotificationDismissButtonAssistiveText")||"Close the chat notification";d.appendChild(m);d.appendChild(k);c.id="embeddedMessagingMinimizedNotification";c.className="embeddedMessagingMinimizedNotification";b.className="embeddedMessagingMinimizedNotificationTextWrapper";e.className="embeddedMessagingMinimizedNotificationText";e.role="status";e.title=E("EmbeddedMessagingMinimizedState","JWTRetrievalFailureText")||"Something went wrong. Log in again to continue your messaging conversation."; +e.innerHTML=E("EmbeddedMessagingMinimizedState","JWTRetrievalFailureText")||"Something went wrong. Log in again to continue your messaging conversation.";e.style.setProperty("font-family",S("font"));h.className="slds-assistive-text";h.innerHTML=E("EmbeddedMessagingMinimizedState","MinimizedNotificationAssistiveText")||"Expand the text.";b.appendChild(e);b.appendChild(h);c.appendChild(b);c.appendChild(d);a.disabled=!0;embeddedservice_bootstrap.settings.targetElement.appendChild(c)}}function Bb(a){a= +a.split(".")[1].replace(/-/g,"+").replace(/_/g,"/");a=decodeURIComponent(window.atob(a).split("").map(function(b){return"%"+("00"+b.charCodeAt(0).toString(16)).slice(-2)}).join(""));return JSON.parse(a)}function sa(a){let b,c;if(!a)return embeddedservice_bootstrap.settings.devMode&&n("validateJwt","Empty jwt parameter passed in - skipping validation."),!1;try{return b=Bb(a),c=Math.floor(Date.now()/1E3)k);h=h.find(k=>k.name===b);if(!m.includes(b))return l("validatePrechatField",`${a} called with an invalid field name ${b}.`),!1;if("string"===typeof c&&(c.toLowerCase().includes("javascript:")||c.toLowerCase().includes("